私は1つのAbstract基本クラスを持っているので、MyBaseと言います。抽象メソッド呼び出しを持つ文字列値を持つパラメーター化されたコンストラクターがあります。また、MyChild という 1 つの子クラスもあります。コンストラクターはなく、1 つだけパブリック メソッドがあり、基本クラスのパラメーター化されたコンストラクターを子クラスに呼び出したいと考えています。
それに応じて解決策を教えてください...
私は1つのAbstract基本クラスを持っているので、MyBaseと言います。抽象メソッド呼び出しを持つ文字列値を持つパラメーター化されたコンストラクターがあります。また、MyChild という 1 つの子クラスもあります。コンストラクターはなく、1 つだけパブリック メソッドがあり、基本クラスのパラメーター化されたコンストラクターを子クラスに呼び出したいと考えています。
それに応じて解決策を教えてください...
ここであなたが何を求めているのか、私は本当に多くの手がかりを持っていないので、推測します:
abstract class MyBase
{
protected MyBase(string foo) { }
}
class Child : MyBase
{
public Child(string foo)
: base(foo)
{ }
}
Child
抽象クラスをインスタンス化できないため、構築の一部でないと「呼び出す」ことはできません。
子クラスでコンストラクターを指定しない場合、親クラスのコンストラクターが使用されます。つまり、子クラスを次のようにインスタンス化できます
Child child = new Child(initString);
上記の子コンストラクターが定義されていない場合、同じシグネチャで親コンストラクターを伝播 (呼び出し) します。
文脈なしであなたを助けるのは難しいですが、私は試してみます。多分あなたはそのようなことをすることができます:
abstract class MyBase
{
protected string _foo;
protected MyBase(string foo)
{
_foo = foo;
}
}
class Child : MyBase
{
public Child()
:base(string.Empty)
{}
public string Foo
{
get
{
return _foo;
}
set
{
_foo = value;
}
}
}
したがって、抽象クラスをインスタンス化できないため、作成できますが、値を保持しているvar obj = new Child() {Foo = "string"};
場合にのみ、このバリアントを選択できます。ただし、変更できる場合は、@Adam Houldsworth が提案したように、コンストラクターを追加することをお勧めします。MyBase
foo
Child