次のクラス階層があります。
public abstract class BaseClass : IBaseInterface
{
public int PropertyA{
get
{
return this.propertyA;
}
set
{
this.propertyA = value;
// ... some additional processing ...
}
}
}
DerivedClassB : BaseClass
{
// some other fields
}
public class ContainingClassC
{
public IBaseInterface BaseInterfaceObjectD
{
get;
set;
}
}
ここで、(BaseClass から継承された) DerivedClassB-Object の PropertyA にアクセスするには、次のように、オブジェクトを BaseClassA の祖先にキャストする必要があります。
// This ContainingClassC is returned from a static, enum-like class:
// containingObject.PropertyA is DerivedClassB by default.
ContainingClassC containingObject = new ContainingClassC();
((IBaseInterface)containingObject.BaseInterfaceObjectD).PropertyA = 42;
これらのクラスを再構築してキャストをなくす方法はありますか? このコードはライブラリの一部であり、同僚はキャストを削除するように求めています。
目標は単純に書くことcontainingObject.BaseInterfaceObjectD.PropertyA = 42
です。