我有一个带有一些受保护成员的抽象基类,但没有抽象成员:
internal abstract class BaseClass
{
protected readonly string Var1;
protected readonly string Var2;
protected BaseClass(string var1, string var2)
{
Var1 = var1;
Var2 = var2;
}
protected int DoSomething1(string s)
{
}
}
还有一些类实现了这个基类,并且每个类都有一些不同的特定方法:
internal sealed class Child1:BaseClass
{
internal Child1(string var1, string var2)
: base(var1, var2)
{
}
internal bool DomeSomethingSpecificForChild1(int i)
{
}
}
现在我有另一个类,我想有一个类型的变量,BaseClass
并根据我的需要,用一个子类型来实例化它。但这不起作用,因为具体方法未知。
public class MyClass
{
private BaseClass myBaseClass;
public bool DomeSomethingSpecific(int i)
{
myBaseClass = new Child1("a","b");
myBaseClass.DomeSomethingSpecificForChild1(i);
}
}
有没有办法可以完成我想要的?或者我是否必须在我的方法的内部范围内声明我的变量MyClass
?
public class MyClass
{
private BaseClass myBaseClass;
public bool DomeSomethingSpecific(int i)
{
var child1 = new Child1("a","b");
myBaseClass.DomeSomethingSpecificForChild1(i);
}
}
但是这样我就不确定该类是否实现了BaseClass
。
接口不是一个选项,因为我希望它保持内部而不是公共的,并且我不希望基类被实例化,所以我认为抽象在这里是一个不错的选择..