sha*_*oth 3 .net c# cloud assemblies azure
我想从我的Windows Azure Web应用程序中的自托管Web应用程序中重用一些代码逻辑.目前我的代码如下:
void myFunction( params )
{
//environment-neutral code
}
Run Code Online (Sandbox Code Playgroud)
我需要重写该代码,以使程序采取不同的行动,具体取决于是否在Azure上:
void myFunctionModified( params )
{
if( onAzure() ) {
//run Azure-specific code
} else {
//run non-Azure code
}
}
Run Code Online (Sandbox Code Playgroud)
是的,我知道虚函数,但我需要这样的代码,至少可以在调用那些虚函数之前实例化正确的对象.
问题是实现onAzure()我需要使用仅存在于Windows Azure上的程序集中的东西(RoleEnvironment例如).因此,我不知道如何实现,onAzure()以便在Windows Azure环境之外运行时不会崩溃.
如何根据系统中存在的程序集使应用程序采取不同的行为?
你能用:
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.IsAvailable
Run Code Online (Sandbox Code Playgroud)
如果您不想在库中包含对Microsoft.WindowsAzure.ServiceRuntime的引用,那么您可以尝试使用AppDomain.CurrentDomain.GetAssemblies()和一些Linq 在已加载的程序集中检查它- 例如
bool runtimeAvailable = AppDomain.CurrentDomain.GetAssemblies().Any(
assembly => assembly.FullName.StartsWith("Microsoft.Microsoft.WindowsAzure.ServiceRuntime"));
Run Code Online (Sandbox Code Playgroud)
或者您可以尝试Microsoft.WindowsAzure.ServiceRuntime使用Assembly.Load并检查FileNotFoundException 来加载程序集
作为对虚函数的评论的替代/补充,您可以考虑使用依赖注入.
| 归档时间: |
|
| 查看次数: |
510 次 |
| 最近记录: |