我想创建一个可以像这样使用流利的接口:如何创建一个良好的接口与泛型
void Main() {
ModelStateMappings.MapDomainModel<Book>().MapViewModel<BookViewModel>()
.Properties(book => book.Author, vm => vm.AuthorsName)
.Properties(book => book.Price, vm => vm.BookPrice);
ModelStateMappings.MapDomainModel<Store>().MapViewModel<StoreViewModel>()
.Properties(store => store.Owner, vm => vm.OwnersName)
.Properties(store => store.Location, vm => vm.Location);
}
我想用一个看起来像这样的集合结束:
static class ModelStateaMappings {
private static IList<ModelMappings> mappings;
// other methods in here to get it working
}
class ModelMappings {
public Type DomainModelType {get;set;}
public Type ViewModelType {get;set;}
public IList<PropertyMapping> PropertyMappings {get;set;}
}
class PropertyMapping {
public Expression<Func<object, object>> DomainProperty {get;set;}
public Expression<Func<object, object>> ViewModelProperty {get;set;}
}
我没有得到上述成绩,但I did create something similar以类似的方式工作,但我不特别喜欢我如何设置流畅的接口。我宁愿让它像我上面那样阅读。
你现在的接口是什么样的?具体问题是什么让你看起来不像你想要的那样? –
我无法弄清楚如何将泛型推断一直引入.Properties()方法,无需同时传入两种类型。我想这样做的方式是每次传递一个通用的方法,然后将它们放在Property()方法中 –
声音就像你需要一个类型数组。你看过[Automapper?](https://github.com/AutoMapper/AutoMapper) –