いくつかの保護されたメンバーを持つ抽象基本クラスがありますが、抽象メンバーはありません:
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
。
インターフェイスはパブリックではなく内部にとどめておきたいのでオプションではなく、基本クラスをインスタンス化したくないので、ここでは抽象が良い選択だと思いました..