Как я могу определить, является ли 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;
Другие вопросы по тегам