c# - 如何阻止 ValueInjecter 映射空值?

标签 c# mapping valueinjecter

我正在使用 ValueInjecter 映射两个相同的对象。我遇到的问题是 ValueInjector 从我的源复制空值到我的目标。所以我将大量数据丢失为空值。

这是我的对象的一个​​示例,有时只填充了一半,这导致它的空值覆盖了目标对象。

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

to.InjectFrom(from);

最佳答案

对于那些使用 ValueInjecter v3+ 的用户,ConventionInjection 已被弃用。使用以下实现相同的结果:

public class NoNullsInjection : LoopInjection
{
    protected override void SetValue(object source, object target, PropertyInfo sp, PropertyInfo tp)
    {
        if (sp.GetValue(source) == null) return;
        base.SetValue(source, target, sp, tp);
    }
}

用法:

target.InjectFrom<NoNullsInjection>(source);

关于c# - 如何阻止 ValueInjecter 映射空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608978/

相关文章:

java - MapStruct - 将具有不同对象类型的两个列表映射到具有另一种对象类型的第三个列表

c# - Omu.ValueInjecter 在允许设置发生之前检查属性

c# - 如何使用 C# 代码和 XAML 在 xamarin.forms 中使用习语

C#编译错误: "Invoke or BeginInvoke cannot be called on a control until the window handle has been created."

C# 日期时间解析问题

asp.net-mvc - 使用 ValueInjecter 在具有不同属性名称的对象之间进行映射

c# - 计算 linq 查询中耗时

java hibernate 覆盖枚举/字符串映射值

python - 通过 Https 的 OpenLayersWidget 和 Django 管理 map