当你知道c#的类名(而不是属性名)时设置它的属性值

本文关键字:属性 设置 当你 | 更新日期: 2023-09-27 18:02:28

我有一个类如下:

  public class DummyReturnDto
  {
      public Set1ReturnDto Foo { get; set; }
      public Set2ReturnDto Bar { get; set; }
      public DummyReturnDto()
      {
          Set1 = new Set1ReturnDto();
          Set2 = new Set2ReturnDto();
      }
  }

保证所有属性都以类作为其类型,并且是唯一的。我想使用反射来设置给定特定类型的属性的值。所以对于Set1ReturnDto:

var propertyInfo = obj.GetType().GetProperty(Set1ReturnDto, ??????);
propertyInfo.SetValue(obj, value, null);
然后for Set2ReturnDto
var propertyInfo = obj.GetType().GetProperty(Set2ReturnDto, ??????);
propertyInfo.SetValue(obj, value, null);
编辑:

这是实现处理EF存储过程

当你知道c#的类名(而不是属性名)时设置它的属性值

多个结果集的通用方法所需知识的一部分。

可以这样做:

var propertyInfo = typeof(DummyReturnDto).GetProperties()
                       .Single(p => p.PropertyType == typeof(Set1ReturnDto));