インターフェイスに由来するプロパティを上書きする際に問題が発生しました。インターフェイスを実装する基本クラスを 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 は「何か他のもの」を出力しますが、この特定の時点では、オブジェクトがどのような種類のクラスなのかわかりません。(私は約10の異なるサブクラスを持っています)。
すべてのオブジェクトを実際のクラスにキャストする必要がありますか? このリストには 100 ~ 200 個のオブジェクトがあり、約 10 個の異なるクラスがあります。または、これを行う他の方法はありますか?
どんな助けでも大歓迎です:)