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]