我正在尝试循环遍历类中的字段,将特定类型的字段放入列表中,然后返回该列表。我知道我缺少一些关键组件,但我无法弄清楚我做错了什么。到目前为止,我的做法如下:
...
我需要返回实际字段的指针列表,而不是数据的副本。如果能帮我解决这个问题,我将不胜感激。
我删除了上面的代码 (你仍然可以在历史记录中看到它),因为它很令人困惑。以下是经过更新的代码(删除了一些额外的内容),由于有了competent_tech的回答,它现在能够正常工作:
以上代码将允许您从类中获取特定基类型的所有属性,并将它们返回到一个列表中。因此,以上代码将返回prop2-prop4。
...
我需要返回实际字段的指针列表,而不是数据的副本。如果能帮我解决这个问题,我将不胜感激。
我删除了上面的代码 (你仍然可以在历史记录中看到它),因为它很令人困惑。以下是经过更新的代码(删除了一些额外的内容),由于有了competent_tech的回答,它现在能够正常工作:
string prop1;
BaseClass prop2;
SubClass prop3;
SubClass prop4;
public List<BaseClass> GetData()
{
List<BaseClass> DataList = new List<BaseClass>();
foreach (System.Reflection.PropertyInfo thisInfo in this.GetType().GetProperties())
{
var tempPropery = thisInfo.GetValue(this, null);
if (tempPropery.GetType().IsSubclassOf(typeof(BaseClass)) || tempPropery.GetType().Equals(typeof(BaseClass)))
{
DataList.Add((BaseClass)tempPropery);
};
}
return DataList;
}
以上代码将允许您从类中获取特定基类型的所有属性,并将它们返回到一个列表中。因此,以上代码将返回prop2-prop4。
Dictionary<string,PrimaryAbility>
。这样,你可以通过以下方式获取STR
:var str = AllAbilities["STR"];
。经常需要反射通常意味着你应该重构你的代码。 - Tim Schmelter