C# 我可以将值映射到现有对象吗?
我使用Omu.ValueInjecter已经有一段时间了,但只是将值“注入”到新创建的对象中C# 我可以将值映射到现有对象吗?,c#,valueinjecter,C#,Valueinjecter,我使用Omu.ValueInjecter已经有一段时间了,但只是将值“注入”到新创建的对象中 public K MapNew(T source) { K target = new K(); target.InjectFrom(source); return target; } 上面的代码运行良好,将值从源映射到新创建的目标 但是,我正在尝试(但未能做到)将值从源对象映射到现有目标。下面的代码与上面的代码类似,区别在于我没有创
public K MapNew(T source) {
K target = new K();
target.InjectFrom(source);
return target;
}
上面的代码运行良好,将值从源映射到新创建的目标
但是,我正在尝试(但未能做到)将值从源对象映射到现有目标。下面的代码与上面的代码类似,区别在于我没有创建新对象
public T MapToTarget(T target, K source) {
return target.InjectFrom(source) as T;
}
这可能吗?上面的代码只返回未修改属性的目标
编辑
注意,在这两种情况下,源对象和目标对象都具有相同的属性名称
注意
非常感谢Omu提供的所有帮助。InjectFrom()方法匹配具有相同名称和类型的属性,因此如果有匹配的属性,将对其进行修改
使用ValueInjector,您只需将源和目标的属性名称注入到现有对象中,但在第二段代码中,我希望将源的值写入目标。这是不会发生的。我想知道我是做错了还是做不到。@DanielHollinrake name and types,必须是确切的名称和类型;如果您想从一种类型转换到另一种类型,您应该创建一个自定义valueinjectionHiya,以确认我希望匹配的属性是确切的名称和类型。目标对象上的某些属性在源对象上不存在,但在这种情况下,我不希望或期望匹配。在这种情况下,应该可以工作,将源类和目标类放在问题中,或者上载一个zip,其中包含一个显示问题的小项目。此处有可为null的注入示例: