解决方案中的 C# 条件引用
C# conditional reference in solution
我正在开发一个 C# 应用程序,该应用程序在其解决方案中使用 .tlb 文件作为参考,该应用程序应该由另一个应用程序安装 - 但是我最近发现了这样的用例,其中不会安装另一个应用程序。在这些情况下,我的程序无法正确 运行,我的安装程序(使用 Microsoft Installer Projects 制作)抛出以下错误:
我怀疑上述行为是由安装程序调用的初始化程序 subclass 引起的。我希望这个初始化程序 class 只调用讨论的 .tlb 作为参考,如果它实际上是 useable/installed - 所以万一它确实存在,因为它只与将它安装到的其他应用程序相关用户计算机。如何在我的 initializer.cs 中实现这种“条件引用”?
确切的代码部分:
using NGOptMan // This should be conditional or the line actually using it;
...
var optMan = (IOptionsManager)Activator.
CreateInstance(Type.GetTypeFromProgID("SIDEXISNG.OptionsManager"));
// This is the only command where I would use this .tlb.
您可以使用 dynamic
,它允许您在没有类型库的情况下使用 COM 对象。
变化:
var optMan = (IOptionsManager)Activator.CreateInstance(...)
到
dynamic foo = Activator.
CreateInstance(Type.GetTypeFromProgID("SIDEXISNG.OptionsManager"));
if (foo == null)
return; // failed
// Success
var optMan = (IOptionsManager)foo; // Now cast using the typelib
注意 dynamic
的使用和演员表的删除。
我正在开发一个 C# 应用程序,该应用程序在其解决方案中使用 .tlb 文件作为参考,该应用程序应该由另一个应用程序安装 - 但是我最近发现了这样的用例,其中不会安装另一个应用程序。在这些情况下,我的程序无法正确 运行,我的安装程序(使用 Microsoft Installer Projects 制作)抛出以下错误:
我怀疑上述行为是由安装程序调用的初始化程序 subclass 引起的。我希望这个初始化程序 class 只调用讨论的 .tlb 作为参考,如果它实际上是 useable/installed - 所以万一它确实存在,因为它只与将它安装到的其他应用程序相关用户计算机。如何在我的 initializer.cs 中实现这种“条件引用”?
确切的代码部分:
using NGOptMan // This should be conditional or the line actually using it;
...
var optMan = (IOptionsManager)Activator.
CreateInstance(Type.GetTypeFromProgID("SIDEXISNG.OptionsManager"));
// This is the only command where I would use this .tlb.
您可以使用 dynamic
,它允许您在没有类型库的情况下使用 COM 对象。
变化:
var optMan = (IOptionsManager)Activator.CreateInstance(...)
到
dynamic foo = Activator.
CreateInstance(Type.GetTypeFromProgID("SIDEXISNG.OptionsManager"));
if (foo == null)
return; // failed
// Success
var optMan = (IOptionsManager)foo; // Now cast using the typelib
注意 dynamic
的使用和演员表的删除。