次のクラスがあります。
public class BaseContainer
{
public BaseItem item {get; set;}
}
public class ExtendedContainer : BaseContainer
{
new public ExtendedItem item {get; set;}
}
public class BaseItem{
public string Name { get; set; }
}
public class ExtendedItem : BaseItem
{
public string Surname { get; set; }
}
次に、次の指示があります。
ExtendedItem ei = new ExtendedItem { Name = "MyName", Surname = "MySurname" };
ExtendedContainer ec = new ExtendedContainer { item = ei };
BaseContainer bc = ec;
string temp = bc.item.Name; // bc.item is null, why?
bc.item が null なのはなぜですか? BaseItem の場合、ExtendedItem はサブクラスであるため、そうすべきではありませんが、コードを実行すると null になります。誰でもこの問題で私を助けることができますか?
私がこれを行っている理由は、私が MVC3 を使用しており、同様の構造の一部である部分ビュー オブジェクト/モデルに渡しているためです。通常は、基本クラスのプロパティだけが必要です。
前もって感謝します。
アップデート
Jon の言うとおりです。私はさまざまなオブジェクトにアクセスしています。それを修正するために私がしたことは、コンストラクターを使用してアイテムのプロパティを同じオブジェクトに設定することです。このような:
public class BaseContainer
{
public BaseItem item {get; set;}
public BaseContainer(BaseItem item)
{
this.item = item;
}
}
public class ExtendedContainer : BaseContainer
{
public ExtendedItem item {get; set;}
public ExtendedContainer(ExtendedItem item) : base(item)
{
this.item = item;
}
}
public class BaseItem{
public string Name { get; set; }
}
public class ExtendedItem : BaseItem
{
public string Surname { get; set; }
}
次に、オブジェクトを作成します。
ExtendedItem ei = new ExtendedItem { Name = "MyName", Surname = "MySurname" };
ExtendedContainer ec = new ExtendedContainer(ei);
BaseContainer bc = ec;
string temp = bc.item.Name;
それは今動作します