小编Kho*_*yen的帖子

C# 泛型类型类无法获取属性值

使用 C# 反射获取和设置通用对象内通用字段的值。但我找不到任何方法来获取这些字段的属性值。下面的代码示例:

public class Foo<T>
{
   public bool IsUpdated { get; set; } 
}

public abstract class ValueObjec<T>
{
   public string InnerValue { get; set; } 
}

public class ItemList: ValueObject<ItemList>
{
   public Foo<string> FirstName;

   public Foo<string> LastName;
}
Run Code Online (Sandbox Code Playgroud)

获取行 (*) 处的“空”项时出现问题。

itemField.GetType() 始终返回System.Reflection.RtFieldInfo类型,但不返回Foo类型。

我已经尝试使用 itemField.FieldType.GetProperty("IsUpdated"),它在返回正确的属性时有效。但抛出错误“对象与目标类型不匹配”。每当调用 GetValue() 方法 itemField.FieldType.GetProperty("IsUpdated").GetValue(itemField, null)

如果得到任何人的帮助,我们将不胜感激!

var itemList = new ItemList();
foreach (var itemField in itemList.GetType().GetFields())
{
    var isUpdated = "false";
    var isUpdatedProp = itemField.GetType().GetProperty("IsUpdated"); …
Run Code Online (Sandbox Code Playgroud)

c# generics reflection field object

4
推荐指数
1
解决办法
1630
查看次数

标签 统计

c# ×1

field ×1

generics ×1

object ×1

reflection ×1