3
我有一個對變體接口的問題,我不知道解決它的最好方法。這些都是我的課:在C#中的逆變化#
public interface IObject {
}
public interface IBigObject : IObject {
}
public interface ISmallObject : IObject {
}
public class AnObject : IBigObject {
}
public class DataWrapper<T> {
public T Data { get; set; }
}
我希望能夠通過一個DataWrapper<IObject>
(這可能是許多派生類),並獲得該項目作爲IObject
,我能做到這一點遠的唯一途徑我所看到的是這樣的:
IObject itemToAdd = null;
if (values[1] is IObject) {
itemToAdd = values[1] as IObject;
} else if (values[1] is DataWrapper<IObject>) {
itemToAdd = ((DataWrapper<IObject>)values[1]).Data;
} else if (values[1] is DataWrapper<IBigObject>) {
itemToAdd = ((DataWrapper<IBigObject>)values[1]).Data;
} else if (values[1] is DataWrapper<BigObjectBase>) {
itemToAdd = ((DataWrapper<ObservableBigObject>)values[1]).Data;
} else if (values[1] is DataWrapper<ObservableBigObject>) {
itemToAdd = ((DataWrapper<ObservableBigObject>)values[1]).Data;
}
有一個較短的方法嗎?
好像兩兩害相權較小。將DataWrapper綁定到IObject或使用反射。至少我知道,如果這是語言的限制。謝謝。 – Echilon