こんにちは、私は C# にかなり慣れていないので、私がやろうとしていることは完全にはわかりません。
基本的に、リストに get プロパティを設定しようとしています。このリストが読み込まれると、別のリストから情報が読み取られます。方法論は次のとおりです。
親リストが空の場合は、新しいリストを作成します。それ以外の場合は、親リストの要素を反復処理し、それに応じてそれぞれを処理します
ただし、 get メソッドはスタックオーバーフローを引き起こし、デバッガーを介して実行すると、リターンステートメントにヒットして処理されたにもかかわらず、スタックが吹き飛ばされるまで何度も何度も実行されているように見えます
コードは次のとおりです。
public ICollection<History> History
{
get {
if (HistoryKeyCount == 0)//HistoryKeyCount = Count of Parent List
{
History = new List<Histories>();
}
else
{
History = new List<Histories>();//Created again because after each read object is dropped from memory
foreach (HistoryKey x in ParentList)
{
if (x.Key == null)
{
// Do nothing
}
else
History.Add(ObjectFinder.FindObject<ParentList>(x.Key));
}
}
return History;
}
set {
//Not implemented yet
}
}
get メソッドに入り、if ステートメントに到達し、新しいオブジェクトを作成し、それを返し、スタックオーバーフロー例外が発生するまで何度も繰り返します。
問題は ObjectFinder クラスや新しいメソッドの作成にあるのではなく、エラーが発生したときにこれらに到達することさえありません。
私は当初、if ステートメントの各インスタンスの後に新しいオブジェクトが作成されていると考えていましたが、問題が解決しない場合にのみ作成されるようにフラグを追加した後です。
以前にこの問題に遭遇した人はいますか? それは私が困惑しているからです!!
----編集--- 問題の原因である可能性が非常に高い.NET用のネイキッドオブジェクトフレームワークを使用していることを忘れていました