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

原文 标签 c# generics reflection propertyinfo

我有如下类(class):

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;

我怎样才能做到这一点?有任何想法吗?

更新。 我正在尝试将 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/

相关文章:

sqlite - SQLAlchemy,反射,不同的后端以及表/列不区分大小写

java - 传入在java中实现接口(interface)的类时出现IllegalArgumentException反射

c# - jQuery Ajax调用仅触发一次

c# - 根据泛型函数内部的typeof使用特定类型

swift - Swift泛型-协议(protocol)不符合协议(protocol)

c# - 如何在 C# 中的泛型接口(interface)上创建协变扩展方法?

c# - 如何创建具有参数和私有(private)类型的返回类型的快速调用委托(delegate),以加快DynamicInvoke

C# 了解对象中某些内容的最快方法已更改?

c# - 将数据存储在文件系统而不是SQL或Oracle数据库中

c# - WCF 还是 ServiceBus?