Как я могу определить, является ли DLL ComVisible?
У меня есть DLL, которая может иметь или не иметь свой атрибут ComVisible, установленный в true. Я не уверен, как это было построено, или с какими атрибутами? Все, что я знаю, это то, что это.Net DLL. Проще говоря, как я могу определить, является ли это Com Visible?
Извините, если это дубликат. Все мои поиски об этом возвращают результаты, которые показывают, как сделать DLL ComVisible. Я знаю, как это сделать.
2 ответа
Решение
Вы можете проверить ComVisibleAttribute сборки, используя отражение:
private static bool IsComVisible(string assemblyPath)
{
var assembly = Assembly.LoadFile(assemblyPath);
var attributes = assembly.GetCustomAttributes(typeof(ComVisibleAttribute), false);
if (attributes.Length > 0)
{
return ((ComVisibleAttribute)attributes[0]).Value;
}
return false;
}
Что-то вроде этого?
Assembly asm = Assembly.GetExecutingAssembly(); //Assembly.LoadFile, Assembly.Load
bool comVisible = asm.GetCustomAttributes()
.OfType<ComVisibleAttribute>()
.First()
.Value;