我正在编写一个可以被各种.net应用程序使用的软件组件。无论如何,组件可以知道它是否被ASP.Net Windows窗体,WPF,Silverlight应用程序,WCF服务调用......?
答案 0 :(得分:2)
不是真的,因为应用可以使用多个框架。您最好的选择可能是查看哪些程序集加载到调用AppDomain中,并从那里获取它:)
答案 1 :(得分: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");
}
答案 2 :(得分:0)
关于我能想到你为什么需要这些信息的唯一原因是,如果你遇到“调用”问题,你需要在winforms应用程序的GUI线程。
如果这是原因,那么SynchronizationContext类已经抽象出来了。
如果是其他原因,我们知道您需要此信息的原因可能会有所帮助。可能有一个类似的抽象已经创建,以满足您的需求。