インターフェイスからのプロパティを上書きする際に問題が発生しました。私はインターフェイスを実装する1つの基本クラスを持っています。このクラスには10個のサブクラスがあります。場合によっては、インタフェースから提供されるプロパティをサブクラスで上書きする必要があります。サブクラスのオーバーライドプロパティをベースクラスのインターフェイス
私の問題は、オブジェクトが持っているクラスの型がわからないうちにプロパティにアクセスし、オブジェクトが上書きされたサブクラスのプロパティ値の代わりに基本クラスのプロパティ値を返すことです。
コード例を簡素化:私はプロパティにアクセスする必要が別のクラスで
public interface Inf
{
string Info
{
get;
}
}
public class BaseClass : Inf
{
public string Info
{
get { return "Something"; }
}
}
public class SubClass : BaseClass
{
new public string Info
{
get { return "Something else"; }
}
}
を、私はこの時点でオブジェクトがベースまたはサブクラスのタイプであれば知らない
List<BaseClass> listBase = new List<BaseClass>();
listBase.Add(new BaseClass());
listBase.Add(new SubClass());
foreach (BaseClass obj in listBase)
{
Console.WriteLine(obj.Info);
}
出力:
:Something
Something
は出力を望んでいました
Something
Something else
((SubClass)obj).Infoは "Something else"を と出力しますが、この特定の時点ではオブジェクトがどのような種類のクラスであるかわかりません。 (私は10の異なるサブクラスを持っています)。
すべてのオブジェクトを実際のクラスにキャストする必要がありますか?このリストには100〜200のオブジェクトがあり、10種類のクラスがあります。あるいはこれを行うための他の方法がありますか?
ありがとうございました:)
オーバーライド/バーチャル方法で問題を解決できますか? –
ありがとう、この方法でうまく動作:) – Koryu