クラスのフィールドを循環し、特定のタイプのフィールドをリストに入れてから、そのリストを返そうとしています。重要なコンポーネントが不足していることはわかっていますが、何が間違っているのか理解できません。これは私がこれまでに持っているものです:
...
データのコピーではなく、実際のフィールドのリストをポインターとして返す必要があります。これを機能させるための助けをいただければ幸いです。
混乱を招いたため、上記のコードを削除しました(履歴で引き続き表示できるはずです)。これは、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を返します。