Как уже указано, отражение является способом пойти. Если Вы собираетесь назвать это часто, я высоко предлагаю кэшировать результаты, поскольку отражение, особенно перечисляя через каждый класс, может быть довольно медленным.
Это - отрывок моего кода, который пробегает все типы во всех загруженных блоках:
// this is making the assumption that all assemblies we need are already loaded.
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (Type type in assembly.GetTypes())
{
var attribs = type.GetCustomAttributes(typeof(MyCustomAttribute), false);
if (attribs != null && attribs.Length > 0)
{
// add to a cache.
}
}
}
Я думаю, что самым большим недостатком использования WPF или WinForms является то, что вам придется программировать на двух языках программирования, что является большими накладными расходами на логистику.
Я видел аргументы такого типа. раньше: используйте C или C ++ для низкого уровня, что-то еще для высокого уровня. В этом случае Qt / C ++ имеет такой же высокий уровень, как и WPF / WinForms, с преимуществом очень простой интеграции пользовательского интерфейса с другим кодом C ++.
Для спектрограмм и других графиков см. Qwt .
] PS: WPF не так популярен в Windows, на самом деле рынок довольно фрагментирован, и WPF - один из менее используемых наборов инструментов GUI. Большая часть кода использует MFC, WTL, Delphi, Win32 и т. Д.
У меня нет опыта работы с QT, но я могу сказать, что WPF хорош, но не так хорош для приложений с высокой загрузкой процессора, к тому же вы не сможете легко напрямую интегрировать свой c / c ++ с WPF.
Потребуется огромное обучение, и вам придется писать COM-интерфейсы для взаимодействия с C # / WPF и вашим собственным кодом. или Visual C ++ .Net CLI, что довольно сложно и доступно меньше руководств.
Но проблема в том, что вы не получите никакой хорошей поддержки, потому что многие люди используют только C #, приложения для баз данных только с WPF / WinForms. Наилучший способ сделать это - написать COM-библиотеки DLL для интеграции с WPF, но это будет сложно.
Вместо этого в MFC доступны различные инструменты, а также доступно множество других коммерческих библиотек для написания хорошего пользовательского интерфейса. в C ++ MFC,
WPF свяжет вас с Windows, но не с каким-либо конкретным языком. Вы можете писать приложения WPF на C #, VB.NET, Managed C ++ или на любом другом языке .NET.
Winforms аналогично привязан к Windows, но вы можете написать свое приложение таким образом, чтобы оно также работало на
1138244] Mono , поэтому является кроссплатформенным. Однако Winforms - гораздо менее мощный инструментарий, когда дело доходит до сложных визуализаций.
Взаимодействие между .NET и собственными приложениями очень сильное, но оно наверняка доставит вам хотя бы небольшую боль. С другой стороны, реализация интерфейса в собственной среде может вызвать у вас еще больше проблем.
Если вы довольны тем, что ваш графический интерфейс привязан к Windows и .NET, WPF - лучший вариант для приложений с высокой степенью визуализации. Если вам не нужна зависимость от .NET или Windows,