Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用泛型类型参数动态调用方法_C#_Generics - Fatal编程技术网

C# 如何使用泛型类型参数动态调用方法

C# 如何使用泛型类型参数动态调用方法,c#,generics,C#,Generics,我有这样的代码 var sampleBus = BusConfigurator.Instance .ConfigureBus((cfg, host) => { cfg.ReceiveEndpoint(host, "sampleQueue", e => { e.UseScheduledRedeli

我有这样的代码

var sampleBus = BusConfigurator.Instance
                .ConfigureBus((cfg, host) =>
                {
                    cfg.ReceiveEndpoint(host, "sampleQueue", e =>
                    {
                        e.UseScheduledRedelivery(r => r.Intervals(TimeSpan.FromMinutes(5));
                        e.UseMessageRetry(r => r.Interval(5, 5000));
                        e.Consumer<ConsumerClass1>();
                    });
                });

sampleBus.Start();
var sampleBus=BusConfigurator.Instance
.ConfigureBus((cfg,主机)=>
{
ReceiveEndpoint(主机,“sampleQueue”,e=>
{
e、 使用ScheduledRedelivery(r=>r.interval(TimeSpan.FromMinutes(5));
e、 UseMessageRetry(r=>r.Interval(55000));
e、 消费者();
});
});
sampleBus.Start();
我有很多消费类,我想用配置文件来处理这个问题。如何将配置文件中的类名转换为消费类

foreach(string className in consumerClassNameList){ 

????

var sampleBus = BusConfigurator.Instance
                    .ConfigureBus((cfg, host) =>
                    {
                        cfg.ReceiveEndpoint(host, "sampleQueue", e =>
                        {
                            e.UseScheduledRedelivery(r => r.Intervals(TimeSpan.FromMinutes(5));
                            e.UseMessageRetry(r => r.Interval(5, 5000));
                            e.Consumer<???>();
                        });
                    });

sampleBus.Start();
}
foreach(ConsumerClassName列表中的字符串类名称){
????
var sampleBus=BusConfigurator.Instance
.ConfigureBus((cfg,主机)=>
{
ReceiveEndpoint(主机,“sampleQueue”,e=>
{
e、 使用ScheduledRedelivery(r=>r.interval(TimeSpan.FromMinutes(5));
e、 UseMessageRetry(r=>r.Interval(55000));
e、 消费者();
});
});
sampleBus.Start();
}
每个ConsumerClass源自:

public class ConsumerClass1<T> : IConsumer<T> where T : class
公共类消费者类别1:i消费者,其中T:class
感谢任何帮助

编辑

我问错问题了。这个代码

e.Consumer<ConsumerClass1>();
e.Consumer();
不是初始化类。它正在调用方法

public static void Consumer<TConsumer>(this IReceiveEndpointConfigurator configurator, Action<IConsumerConfigurator<TConsumer>> configure = null) where TConsumer : class, IConsumer, new();
public static void Consumer(此IReceiveEndpointConfigurator配置程序,Action configure=null),其中TConsumer:class,IConsumer,new();

抱歉问错了。问题应该是“如何使用泛型类型参数动态调用方法”。我找到了答案。

要添加到Johnny的答案中:您可以通过
type.GetType(string)
获得
type
对象:


您应该提供程序集限定名称,该名称可以通过
类型
对象的相应属性获得。类型应该出现在任何导入的名称空间中。

要添加到Johnny的答案中:您可以通过
类型获得
类型
对象。GetType(string)


您应该提供程序集限定名称,该名称可以通过
类型
对象的相应属性获得。类型应该出现在任何导入的名称空间中。

我不理解您的问题,您能解释得更好吗?我不理解您的问题,您能解释得更好吗?
> Type.GetType(typeof(int).AssemblyQualifiedName)
[System.Int32]