【发布时间】:2020-02-26 14:04:05
【问题描述】:
我想在 Asp.net 中使用具有策略模式的泛型类以及依赖注入
接口和具体类的定义
public interface IPaymentMethod<T>
{
string Name { get; set }
}
public interface PaymentMethod<T> : IPaymentMethod<T> where T: class
{
public string Name { get; set; }
}
Startup.cs
services.AddScoped(typeof(IPaymentMethod<>), typeof(PaymentMethod<>));
在应用程序中
public class PaymentResolver
{
public PaymentResolver(List<IPaymentMethod<????>> paymentMethods)
{ ... }
public IPaymentMethod Resolve(string name)
{
return _paymentMethods.FirstOrDefault(item => item.Name == name);
}
}
如何从依赖注入中获取 IPaymentMethod 实例的集合? PaymentResolver.Resolve 方法似乎不正确。
【问题讨论】:
-
你不能有一个泛型类型的列表,即使不考虑 DI。
-
T中的IPaymentMethod<T>代表什么?请使用有关您的设计的更多信息更新您的问题。T是什么?你为什么需要它?你是怎么用的? -
Steven,更多的是学习如何使用具有策略模式的通用类列表,而不是示例的上下文。 T 可以代表任何东西,不受这个基本示例的约束
-
你没有具体的类。
IPaymentMethod和PaymentMethod都被标记为接口。
标签: c# asp.net generics dependency-injection strategy-pattern