泛型类实例,类型来自PropertyInfo.PropertyType



我有这样的类:

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;

我该怎么做?什么好主意吗?

乌利希期刊指南。我正试图将类型传递给泛型方法。是的,这就是我想要的

您需要做的是:

typeof(SampleClassToTest<>).MakeGenericType(propertyType)
       .GetMethod("SomeMethod", new Type[] {typeof(string)})
       .Invoke(null, new object[] {"some parameter"});

丑陋。如果

可以所有有帮助,我建议提供一个接受Type实例的非通用API;这里的好处是,通用API可以通过使用typeof(T)轻松调用非通用API。

看起来你想:

Type propertyType;
Type classType = typeof(SampleClassToTest<>).MakeGenericType(propertyType);
MethodInfo method = classType.GetMethod("SomeMethod", BindingFlags.Static | BindingFlags.Public, null, new[] { typeof(string) }, null);
object fake = method.Invoke(null, new object[] { "some parameter" });

相关内容

  • 没有找到相关文章

最新更新