私はメソッドのセットを構築したい:抽象汎用メソッドと文字列との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. 1種類、そして一つの値 2.一種類、複数の値を返すと 3.複数のタイプと複数の値を返します複数のフィルタ
タイプは常にenumの一部で、最後の値は文字列である必要がありますが、メソッドを呼び出す前に値/配列ToStringをキャストしたくありません。
@DavidGは何を言った。それに加えて、あなたのジェネリックアプローチはやや独特のようです。多分あなたは何をしようとしていますか? – decPL
英語のみお願いします – DavidG
http://stackoverflow.com/questions/2873480/generic-listt-as-ienumerableobject – CodeCaster