我有如下类:
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”的类型我只能使用反射从 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。
关于c# - 类型来自 PropertyInfo.PropertyType 的通用类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15432986/