У меня есть классы Проект , Ресурс и Файл .
где
A Проект содержит СПИСОК Ресурсы .
Каждый ресурс содержит LIST из файлов определенного типа.
Это сопоставлено с XML:
<Project>
<Resource id=1>
<File id="1" path="" type="A" />
<File id="2" path="" type="B" />
<File id="3" path="" type="B" />
<File id="4" path="" type="B" />
</Resource>
<Resource id=2>
<File id="1" path="" type="A" />
<File id="2" path="" type="B" />
<File id="3" path="" type="B" />
<File id="4" path="" type="B" />
</Resource>
</Project>
Таким образом, в основном каждый ресурс должен иметь не более одного файла типа «A» и любое количество файлов типа «B». Тип файла выбирается пользователем из диалогового окна, в котором он выбирает файл и добавляет его к ресурсу.
Проблема в том, что для каждого файла типа "A" мне нужно создать новый ресурс и, следовательно, новый узел в XML (что мой текущий код не может сделать)
Первоначально я пришел со следующим (обобщенно для краткости)
Project p =new Project("Untitled project"); //Will happen once per project
Resource res = p.CreateProjectResource("resource1");
//various params to create resource
p.AddResource(res);
//now lets add files to a resource
AddFileHelper(res,"C:\myfile1.bin","A",guid.toString());
AddFileHelper(res,"C:\myfile32.bin","B",guid.toString());
AddFileHelper(res,"C:\myfile56.bin","B",guid.toString());
//The next statement should create a new resource and add the file to
//the new created design
AddFileHelper(res,"C:\myfile4.bin","A",guid.toString()); //
//some helper class :
//Adds a file of type "type" to a resource "res" with file ID as "id"
private AddFileHelper(Resource res,string path,FileType type,string id)
{
// path is user defined file path from OpenFile dialog,
//type is selected from a Dropdown (of Enum values "A","B",...)
//id is GUID
res.AddFile(path,type,id);
//************ OR it could be also written as *******
//ResFile file =new ResFile(path,type,id);
//res.AddFile(file);
//Update XML file here..
}
Основная проблема заключается в том, что пользователь не создает ресурсы «явно» (кроме первого ресурса), а создание нового ресурса зависит от типа добавляемого пользователем файла.
Также из-за этого дизайна трудно определить Ресурс с заданным идентификатором файла.
Единственный способ отследить это использование коллекции файлов в каждом классе ресурсов.
Любая помощь ??
Спасибо всем.
Это относится к вопросу, который я задавал до post