编程语言
首页 > 编程语言> > c# – 具有PropertyInfo.PropertyType类型的通用类实例

c# – 具有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”的类型我只能使用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.

标签:c,reflection,generics,propertyinfo
来源: https://codeday.me/bug/20190620/1244982.html