Hei*_*nzi 6 .net reference .net-assembly
我的应用程序包含对外部库(SQL Server管理对象)的引用.显然,如果运行时系统中不存在该库,则只要没有调用使用此库中的类的方法,应用程序仍然可以工作.
问题1:这是指定行为还是CLR加载库的方式(幸运)副作用?
要检测引用是否可访问,我目前使用如下代码:
Function IsLibraryAvailable() As Boolean
Try
TestMethod()
Catch ex As FileNotFoundException
Return False
End Try
Return True
End Function
Sub TestMethod()
Dim srv As New Smo.Server() ' Try to create an object in the library
End Sub
Run Code Online (Sandbox Code Playgroud)
它有效,但似乎很难看.注意如果TestMethod的是一个单独的方法,它才能正常运行,否则异常将在抛出开头的IsLibraryAvailable(在try-catch之前,即使对象实例化try-catch块内occurrs).
问题2:有更好的选择吗?
特别是,我担心函数内联等优化可能会阻止我的代码工作.
这是预料之中的,因为 JIT 在每个方法级别都是惰性的。请注意,内联在这里不是问题,因为这也是 JIT 问题,而不是编译器问题。
更好的选择:
就我个人而言,我只会使用第一个选项。
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |