我有第三方設計糟糕的圖書館,我必須使用。
它擁有各種類型它與中,我們會打電話給他們SomeType1,SomeType2等
沒有這些類型都有一個共同的基類,但都具有不同的返回類型一個名爲Value屬性。
我想要做的就是能夠Mixin這個類,所以我可以打電話someType1Instance.Value
和someType2Instance.Value
,而不必關心它的結構類型和不關心返回類型是什麼(我可以使用object
)。
所以我的代碼目前是:沒有基類問題,在這種特殊情況下如何使用Castle.DynamicProxy Mixin?
public interface ISomeType<V>
{
V Value {get; set;}
}
public interface ISomeTypeWrapper
{
object Value { get; set; }
}
public class SomeTypeWrapper<T> : ISomeTypeWrapper
where T : ISomeType<???>
{
T someType;
public SomeTypeWrapper(T wrappedSomeType)
{
someType = wrappedSomeType
}
public object Value
{
get { return someType.Value; }
set { someType.Value = value != null ? value : default(T); }
}
}
public class SomeType1
{
public int Value { get; set; }
}
public class SomeType2
{
public string Value { get; set; }
}
的問題是,我不知道是什麼牛逼可能直到運行時由於這樣的事實,我得到的對象的字典。
我可以迭代字典並使用反射來創建一個運行時的SomeWrapperType,但我想避免它。
如何將SomeType的concreate類型混入ISomeType?
我怎麼知道V型參數是什麼? (希望我有像C++一樣的typedefs和decltype)
我怎樣才能以最少的反射使用Mixin這些具有接口/基類的類?
有多少類型,我們在談論什麼?什麼是第三方api? – Bronumski 2010-11-02 15:54:11
13-14,microsoft dynamics crm。 – 2010-11-02 15:56:49