我有以下课程:
public class SampleClassToTest<T>
{
public static Fake<T> SomeMethod(string parameter)
{
// some code
}
public static Fake<T> SomeMethod(string parameter, int anotherParameter)
{
//some another code
}
}
public class Fake<T>
{
// some code
}
我想以这种方式使用它们:
SampleClassToTest<MyClass>.SomeMethod("some parameter");
我遇到的问题如下:“MyClass”的类型我只能使用Reflection从PropertyInfo实例获取,所以我有
Type propertyType = propertyInfo.PropertyType;
我怎样才能做到这一点?有任何想法吗?
UPD.我正在尝试将Type传递给泛型方法.是的,这就是我想要的.
解决方法:
你需要这样做:
typeof(SampleClassToTest<>).MakeGenericType(propertyType)
.GetMethod("SomeMethod", new Type[] {typeof(string)})
.Invoke(null, new object[] {"some parameter"});
丑陋.
如果它可以得到帮助,我建议提供一个接受Type实例的非泛型API;这里的好处是通用API可以通过使用typeof(T)轻松调用非泛型API.