c# - 类型来自 PropertyInfo.PropertyType 的通用类实例

标签 c# generics reflection propertyinfo

我有如下类:

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/

相关文章:

c# - 如何避免在OnTriggerEnter()中调用GetComponent()?

c# - Entity Framework ——通过名称获取实体

java - Kotlin 中的通用转换

c# - 如何期望类的属性类型作为泛型函数中的参数?

c# - 如何使一个方法采用两种不同的类型

java - 比较 Java 中的修饰符

arrays - 在golang中转储接口(interface)数组

C#:获取列表中所有项目的任意属性的最大值和最小值

c# - 如何写入 "*.bat"文件?

c# - 使用c#在switch语句中使用for循环