C# 使用AutoMapper,是否可以将属性值映射到属性?
我正在使用AutoMapper for C#,并尝试将属性值转换为属性名称 考虑以下几点:C# 使用AutoMapper,是否可以将属性值映射到属性?,c#,automapper,C#,Automapper,我正在使用AutoMapper for C#,并尝试将属性值转换为属性名称 考虑以下几点: public class ClassA { public string ParamA { get; set; } public string ParamB { get; set; } } public class ClassB { public string Name { get; set; } public string Val { get; set; } } 我有一
public class ClassA
{
public string ParamA { get; set; }
public string ParamB { get; set; }
}
public class ClassB
{
public string Name { get; set; }
public string Val { get; set; }
}
我有一个ClassB实例列表,我正试图根据“Name”的值将ClassB中的“Val”属性值转换为ClassA的正确属性:
ClassB b1=new ClassB(){Name=“ParamA”,Val=“ValueA”};
ClassB b2=new ClassB(){Name=“ParamB”,Val=“ValueB”};
ClassB b3=new ClassB(){Name=“ParamC”,Val=“ValueC”};
List listB=新列表(){b1,b2,b3};
因此,我试图使用listB创建一个类型为ClassA
的对象,使用ParamA=“ValueA”
和ParamB=“ValueB”
,是否可以使用AutoMapper或任何其他工具
是否可以使用AutoMapper或任何其他工具
您可以使用来执行以下操作:
ClassA a = new ClassA();
foreach (var b in listB)
{
typeof(ClassA)
.GetProperty(b.Name) //Get property of ClassA of which name is b.Name
.SetValue(a , b.Val); //Set the value of such property on object a
}
请注意,根据您的问题,ClassA
应该有一个名为ParamC
的属性
是否可以使用AutoMapper或任何其他工具
您可以使用来执行以下操作:
ClassA a = new ClassA();
foreach (var b in listB)
{
typeof(ClassA)
.GetProperty(b.Name) //Get property of ClassA of which name is b.Name
.SetValue(a , b.Val); //Set the value of such property on object a
}
请注意,根据您的问题,
ClassA
应该有一个名为ParamC
的属性。我曾经找到过这段代码,我一直在使用它来处理这类事情。将此扩展方法放入类中:
public object this[string propertyName]
{
get { return this.GetType().GetProperty(propertyName).GetValue(this, null); }
set { this.GetType().GetProperty(propertyName).SetValue(this, value, null); }
}
然后您可以使用[]来执行以下操作
ClassA a;
ClassB b;
...
a[b.Name] = b.Val;
我曾经发现过这段代码,我一直在用它来处理这类事情。将此扩展方法放入类中:
public object this[string propertyName]
{
get { return this.GetType().GetProperty(propertyName).GetValue(this, null); }
set { this.GetType().GetProperty(propertyName).SetValue(this, value, null); }
}
然后您可以使用[]来执行以下操作
ClassA a;
ClassB b;
...
a[b.Name] = b.Val;
我没有提到ClassA是第三方,所以我不能向它添加索引器。不过你可能是对的,最好的方法是使用反射。谢谢我没有提到ClassA是第三方,所以我不能向它添加索引器。不过你可能是对的,最好的方法是使用反射。谢谢