我想建立的一套方法:摘要泛型方法和字符串和IEnumerable对象问题
我有这个抽象:
public abstract Filter<T> Create(T type, string value);
public abstract IEnumerable<Filter<T>> Create(T type, IEnumerable<object> values);
与实现
public override Filter<DiscountFilterType> Create(DiscountFilterType type, string value)
=> new DiscountFilter {Type = type, Value = string.IsNullOrWhiteSpace(value) ? null : value};
public override IEnumerable<Filter<DiscountFilterType>> Create(DiscountFilterType type, IEnumerable<object> values)
=> values.Select(value => this.Create(type, value?.ToString())).ToList();
它看起来不错,但如果我想这样做:
var type = DiscountFilterType.CampaignStatus;
var values = new List<CampaignStatus>{
CampaignStatus.Active,
CampaignStatus.Accepted,
CampaignStatus.Supplement};
// Act
var result = sut.Create(ype, values);
它试图将数组发送到字符串方法。
'CS1503 Argument 2: cannot convert from 'System.Collections.Generic.List<CampaignStatus>' to 'string'
这是怎么回事? 如果我想这样做:
public abstract Filter<T> Create(T type, object value);
public abstract IEnumerable<Filter<T>> Create(T type, IEnumerable<object> values);
怎么样?
@Edit: 我希望有方法来创建过滤器,其采用: 1.一种类型,以及一个值 2.一种类型的,多个值,并返回多个过滤器 3.多种类型和多个值,并返回多个过滤器
类型总是一些枚举和值最后应该作为字符串,但我不想在调用方法之前转换值/数组ToString。
@DavidG说过的话。最重要的是,你的通用方法似乎有点奇特。也许退后一步,描述你打算做什么? – decPL
仅英文请 – DavidG
http://stackoverflow.com/questions/2873480/generic-listt-as-ienumerableobject – CodeCaster