c# - 什么 C#/Linq 代码在不知道它们的类型的情况下复制两个对象之间所有匹配的属性名称值?

标签 c# reflection

我有一个众所周知的 POCO Customer 类要从我的方法返回。但是,我只填充由不断变化的表达式 p => new {p.id, p.name} 指定的属性,例如,作为方法的参数。

我需要以某种方式复制这两个对象之间的所有匹配字段。

var returnObject = IList<Customer>();
var partialFieldObject = DC.Customers.Select( expParameter); // wont know the fields

foreach( var partialRecord in partialFieldObject)
{    foreach (var property in partialRecord // Pseudo code)
     {
         returnObject[property] = property.value; // More Pseudo code
     }
}
End result is a strongly typed Customer POCO returned that only has the selected fields populated with values.

最佳答案

假设 partialFieldObject 上的属性与 Customer 上的属性完全对齐(区分大小写)...

void SetProperties(object source, object target)
{
    var customerType = target.GetType();
    foreach (var prop in source.GetType().GetProperties())
    {
        var propGetter = prop.GetGetMethod();
        var propSetter = customerType.GetProperty(prop.Name).GetSetMethod();
        var valueToSet = propGetter.Invoke(source, null);
        propSetter.Invoke(target, new[] { valueToSet });
    }
}

关于c# - 什么 C#/Linq 代码在不知道它们的类型的情况下复制两个对象之间所有匹配的属性名称值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4039753/

相关文章:

c# - 如何使用反射创建 C# 数组并仅输入信息?

java - CRUD 接口(interface)对多个子类型使用一个 Controller

C++ 使用 boost fusion adapt_struct 迭代到嵌套结构字段

c# - 使用动态转储 ComObject 对象?

.net - 如何检索 .net 中泛型 IEnumerable 中使用的泛型类型?

c# - 编写条件语句的替代方法

c# - 在 XML 文件中查找节点 - C# 中的性能改进

c# - 捕获当前线程中的所有异常

c# - 如果文本框为空,标签会抛出错误

c# - 设计房屋的绘图面板