C#代码从*任意*域模型对象创建自动映射DDL值(文本,值),在参数中提供两个字段名

C#代码从*任意*域模型对象创建自动映射DDL值(文本,值),在参数中提供两个字段名,c#,service,repository-pattern,automapper,C#,Service,Repository Pattern,Automapper,使用并提供两个字段名作为参数来创建(服务)方法以返回对象(DDL的ViewModel)的C代码是什么 DDL用于下拉列表: public class DDLitems { public string text {get;set;} public string value {get;set} } 我可怕的伪C代码想法:(是的,还不知道怎么做): public IList AutoMapDDLvalue(IList源代码, 键入objectClass.textFieldName,

使用并提供两个字段名作为参数来创建(服务)方法以返回对象(DDL的ViewModel)的C代码是什么

DDL用于下拉列表:

public class DDLitems {
    public string text {get;set;}
    public string value {get;set}
}
我可怕的伪C代码想法:(是的,还不知道怎么做):

public IList AutoMapDDLvalue(IList源代码,
键入objectClass.textFieldName,
类型objectClass.valueFieldName)
{
var EntityRepository=新EntityRepository();
Mapper.CreateMap()
.ForMember(dest=>dest.text,
opt=>opt.MapFrom(src=>src.objectClass.textFieldName))
.ForMember(dest=>dest.value,
opt=>opt.MapFrom(src=>src.objectClass.valueFieldName));
返回Mapper.Map(EntityRepository.Get());
}

我只是认为字段类型需要转换为字符串。我想我们可以为每个对象添加一个generic.ToString()。

我绝对没有使用AutoMapper的经验,但我想问题归结为从对象获取属性,而您只在运行时知道属性名称

如果这是个问题,那就是反思的目的:)

可以使用以下方法从对象中获取属性:

public object GetProperty(object obj, string propertyName)
{
  PropertyInfo pi = obj.GetType().GetProperty(propertyName);
  object value = pi.GetValue(o, null);
  //or object value = pi.GetGetMethod().Invoke(obj, null)
  return value;
}

是的。这实际上与AutoMapper无关,只是为了澄清所需的参数。代码不错。
public object GetProperty(object obj, string propertyName)
{
  PropertyInfo pi = obj.GetType().GetProperty(propertyName);
  object value = pi.GetValue(o, null);
  //or object value = pi.GetGetMethod().Invoke(obj, null)
  return value;
}