2012-05-11 96 views
2

是有可能从注入的东西是这样的:ValueInjecter不同类型/属性名称

public class DomainEntity 
{ 
    public Resource DescriptionResource { get; set; } 
} 

public class Resource 
{ 
    public List<ResourceLocalization> Localizations { get; set; } 
} 

public class ResourceLocalization 
{ 
    public string Culture { get; set; } 
    public string Value { get; set; } 
} 

到这样的事情:

public class DomainEntityViewModel 
{ 
    public string Description { get; set; } 
} 

(DomainEntity.DescriptionResource.Localizations.First()值=> DomainEntityViewModel.Description)

使用ValueInjecter。

谢谢!

回答

2

您可以使用此注射:

public class MyInj : ConventionInjection 
    { 
     protected override bool Match(ConventionInfo c) 
     { 
      return c.TargetProp.Name == c.SourceProp.Name 
      && c.TargetProp.Type == typeof (string) 
      && c.SourceProp.Type == typeof (List<ResourceLocalization>); 
     } 
     protected override object SetValue(ConventionInfo c) 
     { 
      return ((List<ResourceLocalization>) c.SourceProp.Value).First().Value; 
     } 
    } 
相关问题