2013-05-15 4 views
1

Я новичок в ValueInjecter. Я знал, как сочетать свойства с тем же именем, но разными колпаками:Указать несколько правил в Injection (-ов) 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.ID к bar.Id. Что делать, если у меня есть другие свойства, которые отображаются с использованием другого правила? Например, у меня также есть foo.MyProp (который является перечисляемым типа FooEnum), который я хочу сопоставить с bar.MyProp, который является строкой (я имею в виду, что она хранит представление перечисления .ToString()).

Как я могу добавить другое правило в свой конвертер? Как будет выглядеть код?

ответ

0

До сих пор я только нашел решение в ValueInjecter's documentation:

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

И вы должны кодировать каждый из классов и убедитесь, что они не перекрывают друг друга

0

вы можете использовать alwas || & & добавить дополнительные правила в методе Match, но в данном конкретном случае я хотел бы создать другую инъекцию, как здесь:

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

в этой странице^вы можете увидеть EnumToInt и IntToEnum, вы можете изменить его и сделать EnumToStr

Смежные вопросы