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.IDされbar.Idます。別のルールを使用してマッピングされた別のプロパティがある場合はどうなりますか? たとえば、文字列 (列挙型の表現を格納することを意味します) にマップしたいfoo.MyProp(これは type の列挙型です) もあります。FooEnumbar.MyProp.ToString()

コンバーターに別のルールを追加するにはどうすればよいですか? コードはどのようになりますか?

4

2 に答える 2

0

|| はいつでも使用できます。&& は Match メソッドに追加のルールを追加しますが、この特定のケースでは、次のように別のインジェクションを作成します。

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

このページでは ^ EnumToInt と IntToEnum を見ることができ、それを変更して EnumToStr を実行できます

于 2013-05-16T09:17:14.553 に答える
0

これまでのところ、ValueInjecter のドキュメントでのみ解決策を見つけました。

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

そして、各クラスをコーディングし、それらが重複しないようにする必要があります

于 2013-05-16T05:11:35.933 に答える