РЕДАКТИРОВАТЬ: похоже, невозможно иметь только один атрибут со всем внутри, как решение № 2, поэтому я в конечном итоге использовал решение № 3, которое не подвержено ошибкам в отличие от решения № 1.
У меня есть следующий атрибут:
// Solution #1 (working)
[Module(Name="Module1", Guid="xxxxx",
NeededFiles_Name = new string[]
{
"module1Conf.xml",
"module1.sql",
"resourcesWindows",
"resourcesUnix",
},
NeededFiles_OS = new OSType[]
{
All,
All,
Windows,
Unix,
}
NeededFiles_Component = new ComponentType[]
{
Server,
Server,
All,
All
}
)]
Проблема в том, что заполнить свойства NeededFile_Xxx нелегко. Было бы проще иметь только одно свойство типа
// Solution #2 (NOT working)
[Module(Name="Module1", Guid="xxxxx",
NeededFile = new FileInfo[]
{
new FileInfo("module1Conf.xml", All, Server),
...
}
)]
но это не разрешено компилятором ( NeededFile не является допустимым аргументом именованного атрибута, поскольку он не является допустимым типом параметра атрибута .
Я мог бы также разделить свой атрибут на несколько и сделать
// Solution #3 (working)
[Module(Name="Module1", Guid="xxxxx"]
[NeededFile("module1Conf.xml", All, Server)]
[NeededFile("module1.sql", All, Server)]
[NeededFile(...)]
но я бы предпочел оставить все как есть.
Возможно ли это сделать? Есть ли лучший способ сделать это?