オブジェクトの作成と保存を保存するループがあります。3 つのクラスと多くのコードがあるため、ハイライトを示します。
public static List<TaskIDHolder> mainHolders = new List<TaskIDHolder> ();
私のループは次のように機能します:
foreach (string aDir in directories){
//Variables
string var1= "";
int var2= 0;
//Buisness Logic
//Storage
Boolean newTaskID = true;
foreach (TaskIDHolder taskIDHolder in mainHolders)
{
if (taskIDHolder.getTaskID().Equals(taskID))
{
//Add obj
File newFile = new File(var1, var2);
taskIDHolder.addFile(newFile);
newTaskID = false;
}
}
if (newTaskID)
{
//Create Holder
File newFile = new File(var1, var2);
TaskIDHolder newHolder = new TaskIDHolder(taskID, newFile);
//Add Holder
mainHolders.Add(newHolder);
}
}
現在、私の他のクラスは File と TaskIDHolder です。これで、異なるインスタンスではなく、TaskIDHolder で同じファイルの 9 つのインスタンスが取得されます。
編集: 申し訳ありませんが、私の質問は、保存されている File オブジェクトの一意のインスタンスを取得する方法です。
質問に対する洞察をもたらさないため、ビジネスロジックを書き留めませんでした。
ここでのクラスに関しては、次のとおりです。
class File
{
public static string var1;
public static int var2;
public File(string avar1, int avar2)
{
var1 = avar1;
var2 = avar2;
}
public string getVar1()
{
return var1;
}
public int getVar2()
{
return var2;
}
}
class TaskIDHolder
{
public static List<File> files = null;
public static string taskID = "";
public TaskIDHolder(string aTaskID, File aFile)
{
taskID = aTaskID;
files = new List<File>();
files.Add(aFile);
}
public void addFile(File aFile)
{
files.Add(aFile);
}
public string getTaskID()
{
return taskID;
}
public List<File> getFiles()
{
return files;
}
}