我正在编写一个可以被各种.net应用程序使用的软件组件。无论如何,组件可以意识到它是否被ASP.Net Windows窗体,WPF,Silverlight应用程序,WCF服务调用...?是否可以确定运行时正在调用的.net组件的类型?
2
A
回答
2
不是真的,因为一个应用程序可能使用多个框架。你最好的选择可能是看哪个程序集加载到调用的AppDomain中,并从那里获取:)
0
关于我能想到为什么你需要这些信息的唯一原因是,如果你遇到“Invoke”问题,你需要在哪里等。一个winforms应用程序的GUI线程。
如果这是原因,那么这个被SynchronizationContext类抽象出来。
如果是其他原因,可能会有助于我们了解您为什么需要此信息。可能有一个类似的抽象已经创建,以满足您的需求。
1
正如@cwap所说,使用AppDomain.CurrentDomain.GetAssemblies()
并检查是否找到WinForms或Asp。
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
if (assembly.Location.EndsWith("System.Windows.Forms.dll"))
Console.WriteLine("Winforms is loaded");
}
相关问题
- 1. 确定正在运行的应用程序的类型(.NET)
- 2. 是否可以在运行时更改AngularJS变量的类型?
- 3. 确定一个可执行文件是否正在运行
- 4. 是否可以在运行时编辑.NET可执行文件的资源?
- 5. Microsoft Unity - 是否可以在运行时更改注册类型?
- 6. 是否可以在运行时创建“反汇编”类型?
- 7. 注解变量是否可以在运行时确定?
- 8. 是否可以在Typescript中定义'string类型数组的对象? (类型检查的正确位置?)
- 9. 确定进程是否正在运行?
- 10. 在运行时确定的泛型类型调用非泛型方法c#
- 11. 运行时间确定C的类型
- 12. 使用在运行时确定的类型参数调用泛型函数
- 13. 在非通用类在运行时确定泛型类型
- 14. 确定.NET类型是否是动态的(使用Reflection.Emit创建)
- 15. 是否可以使用完整.NET框架的运行时运行Silverlight代码?
- 16. 可以在运行时确定数组的大小c?
- 17. 在运行时确定一个通用类的类型
- 18. 是否可以在运行时检索用于类型令牌的通用类型(即类别<T>)?
- 19. 是否可以调试在运行时编译的代码?
- 20. 是否可以确定实例方法是否在原型方法中调用?
- 21. 如何确定JNI(jogl)在运行时是否可用?
- 22. iOS - 确定Accelerate.framework在运行时是否可用
- 23. 是否可以通过反射调用值类型运算符?
- 24. 在MSBuild中可以确定我是否在Visual Studio中运行
- 25. 是否可以在运行时选择C++泛型类型参数?
- 26. 如何以编程方式确定ehcache是否正在运行?
- 27. 以编程方式确定IIS站点是否正在运行
- 28. .NET定时器是否异步运行?
- 29. .NET运行时如何确定两种类型相同?
- 30. 如何确定在C/C++运行时在.NET下的方法参数类型?
恐怕这是一个比特定需求更具推测性的问题。我所指的组件向其所在的infrastrucutre框架提供信息(类似于Environment.Context)。我试图确定哪些信息可以确定并公开给其他基础设施组件使用。例如,其运行的位置,以便组件可以使用区域特定的设置,部署类型,以便组件可以根据测试或生产情况采取不同的行为。 – gouldos 2010-12-03 10:17:34