4

ValueInjecter を使用して 2 つの同一のオブジェクトをマップしています。私が抱えている問題は、ValueInjector がソースからターゲットに null 値をコピーすることです。そのため、多くのデータが null 値に失われています。

これは私のオブジェクトの例で、半分しか入力されていないことがあり、その結果、null 値がターゲット オブジェクトを上書きします。

public class MyObject()
{
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<OtherObject> OtherObjects { get; set; }
}

to.InjectFrom(from);
4

3 に答える 3

1

この場合、カスタムの ConventionInjection を作成する必要があります。例 #2 を参照してください: http://valueinjecter.codeplex.com/wikipage?title=step%20by%20step%20explanation&referringTitle=Home

そのため、Match メソッドをオーバーライドする必要があります。

protected override bool Match(ConventionInfo c){
    //Use ConventionInfo parameter to access the source property value
    //For instance, return true if the property value is not null.
}
于 2012-05-15T22:31:48.833 に答える
1

あなたはこのようなものが欲しいです。

public class NoNullsInjection : ConventionInjection
{
    protected override bool Match(ConventionInfo c)
    {
        return c.SourceProp.Name == c.TargetProp.Name
                && c.SourceProp.Value != null;
    }
}

使用法:

target.InjectFrom(new NoNullsInjection(), source);
于 2014-05-16T13:17:55.643 に答える