我有第三方设计糟糕的图书馆,我必须使用。
它拥有各种类型它与中,我们会打电话给他们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