1

我是 ValueInjecter 的新手。我知道如何匹配具有相同名称但不同大写的属性:

public class IgnoreCaseInjection : ConventionInjection
{
     protected override bool Match(ConventionInfo c)
     {
         return String.Compare(c.SourceProp.Name, c.TargetProp.Name, 
                               StringComparison.OrdinalIgnoreCase) == 0;
     }
}

和:

var foo = new Foo() { ID = 1};
var bar = new Bar();
bar.InjectFrom<IgnoreCaseInjection>(foo);

这将映射foo.IDbar.Id. 如果我有另一个使用不同规则映射的属性怎么办?例如,我也有foo.MyProp(这是一个类型的可枚举FooEnum),我想映射到bar.MyProp它是一个字符串(我的意思是它存储.ToString()枚举的表示)。

如何向我的转换器添加另一条规则?代码会是什么样子?

4

2 回答 2

0

到目前为止,我只在ValueInjecter 的文档中找到了解决方案:

viewModel.InjectFrom(entity)
                .InjectFrom<CountryToLookup>(entity)
                .InjectFrom<AnythingElseYouMightImagine>(entity)
                .InjectFrom(new StuffInjection(stuffRepository), anotherEntity); 

你必须对每个类进行编码并确保它们不重叠

于 2013-05-16T05:11:35.933 回答
0

you can alwas use || && to add additional rules in the Match method, but in this specific case I would create another injection like here:

https://valueinjecter.codeplex.com/wikipage?title=Useful%20injections&referringTitle=Home

in this page ^ you can see EnumToInt and IntToEnum, you can modify it and do the EnumToStr

于 2013-05-16T09:17:14.553 回答