我想建立的一套方法:摘要泛型方法和字符串和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