使用AutoMapper後,我在本網站上發現了ValueInjecter。我正在嘗試它,但我堅持什麼可能是一個非常簡單的情況。ValueInjecter問題
但在我深入代碼示例之前,有沒有人知道ValueInjecter是否可以在中等信任的Web環境中工作? (像Godaddy?)
好吧,到代碼!我有以下型號:
public class NameComponent
{
public string First { get; set; }
public string Last { get; set; }
public string MiddleInitial { get; set; }
}
public class Person
{
public NameComponent Name { get; set; }
}
,我想要映射到以下DTO:
public class PersonDTO : BaseDTO
{
private string _firstName;
public string FirstName
{
get { return _firstName; }
set { NotifyPropertyChanged(() => FirstName, ref _firstName, value); }
}
private string _middleInitial;
public string MiddleInitial
{
get { return _middleInitial; }
set { NotifyPropertyChanged(() => MiddleInitial, ref _middleInitial, value); }
}
private string _lastName;
public string LastName
{
get { return _lastName; }
set { NotifyPropertyChanged(() => LastName, ref _lastName, value); }
}
}
所以,當我想從模型到DTO地圖我需要一個Model.Name.First - > DTO.FirstName 當從DTO到模型時,我需要FirstName - > Name.First。從我的理解來看,這不是一個簡單的Flatten/UnFlatten,因爲這些單詞也會顛倒自己,即:名字< - > Name.First。所以First和Last的名字可以使用相同的規則,但MiddleInitial呢? Model.Name.MiddleInitial - > DTO.MiddleInitial。
我看到有一些插件,但他們似乎沒有做我想做的。有沒有其他人遇到這種情況?
我迫不及待地想嘗試了這一點!感謝您的答覆。看着解決方案給我帶來了另一個問題。我發現爲了映射Person - > PersonDTO需要這樣的東西。 var pp = new Person(); pp.InjectFrom(dto); pp.InjectFrom(dto); 是否有任何形式的設施可以讓我設置地圖在啓動時註冊這種東西? –
NYCChris
2011-03-03 13:59:18
類似於 'var injecter = new ValueInjecter(); injecter.Define <人,PersonDTO>((人,DTO,噴油器)=> \t { \t \t injecter.Inject(DTO,人); \t \t injecter.Inject(進樣(DTO,人); \t}); ' 然後後來在使用它只是這個... pp.InjectFrom(dto); –
NYCChris
2011-03-03 13:59:50
@NYCChris :)不,這是automapper,但你可以創建自己的映射類,並把有什麼你需要注射 – Omu 2011-03-03 14:45:41