0
我有一個接口使用,它看起來像下面如何指定只列出類型爲您的容器上的方法
public interface IModelConverter<TSourceModel, TDestinationModel>
{
TListType ToDestination<TListType>(IEnumerable<TSourceModel> source)
where TListType : IList<TDestinationModel>, new();
TListType ToSource<TListType>(IEnumerable<TDestinationModel> source)
where TListType : IList<TSourceModel>, new();
TDestinationModel ToDestination(TSourceModel source);
TSourceModel ToSource(TDestinationModel source);
}
我希望能夠調用的方式錶轉換的方法這樣我只需指定列表類型,而不是在列表中包含所包含的類型,因爲它是從interace定義中推斷出來的。
例: 比方說,我創建了一個實現這樣
FooBooModelConverter : IModelConverter<Foo,Boo>
...後來在我的代碼實例作爲modelConverter,我想做到以下幾點
BindingList<Foo> fooList = modelConverter<BindingList>.ToDestination(booList);
或
List<Foo> fooList = modelConverter<List>.ToDestination(booList);
但是,我不得不做下面的事情
BindingList<Foo> fooList = modelConverter<BindingList<Foo>>.ToDestination(booList);
或
List<Foo> fooList = modelConverter<List<Foo>>.ToDestination(booList);
Respecifying富列表中的類型是多餘的,難看。
最好我喜歡做下面的事情,讓它自動通過返回值來推斷列表類型,但我會盡我所能。任何人?
BindingList<Foo> fooList = modelConverter.ToDestination(booList);