我有下面的類層次:現在訪問抽象類的成員
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;
}
}
,爲了訪問DerivedClassB-對象的PropertyA(從BaseClass的繼承),我有對象轉換爲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
。
您的描述和代碼並不一致。請把一個與另一個一致。 – Jon 2012-07-09 09:51:25
對不起......正在努力。 – lowerkey 2012-07-09 10:01:59
'((IBaseInterface)containsObject.BaseInterfaceObjectD)'這已經是接口類型。你爲什麼要演員? – leppie 2012-07-09 10:09:37