C# 如何理解在运行时执行my dll的上下文:WinForms、WinService或ASP.NET?

C# 如何理解在运行时执行my dll的上下文:WinForms、WinService或ASP.NET?,c#,asp.net,winforms,windows-services,C#,Asp.net,Winforms,Windows Services,我的汇编服务是为在WinForms上下文中使用而开发的。 因此,如果在某个地方出现问题,我的dll将显示错误形式和相应的消息 但现在我要用它。 代码非常陈旧和肮脏,这就是为什么我不想使用模式方法,等等。 无论如何,我需要有100%的工作方式来确定,我有什么样的背景 我正处于状态 我在服兵役 我在网上 如果我理解正确的话,你正在制造噩梦的路上 您的程序集不应该知道是谁在使用它。想象一下,明天会有另一个使用程序集的上下文,您必须再次更改代码并添加更多本来不应该存在的依赖项 总之,您可以创建一个One

我的汇编服务是为在WinForms上下文中使用而开发的。 因此,如果在某个地方出现问题,我的dll将显示错误形式和相应的消息

但现在我要用它。 代码非常陈旧和肮脏,这就是为什么我不想使用模式方法,等等。 无论如何,我需要有100%的工作方式来确定,我有什么样的背景

我正处于状态 我在服兵役 我在网上
如果我理解正确的话,你正在制造噩梦的路上

您的程序集不应该知道是谁在使用它。想象一下,明天会有另一个使用程序集的上下文,您必须再次更改代码并添加更多本来不应该存在的依赖项

总之,您可以创建一个OneError事件,在该事件上调用程序集的使用者为其指定的相应委托,或者至少执行与System.Console.Out类似的操作;也就是说,您创建了一个TextWriter类型的属性,默认情况下用于记录所有错误,但允许程序集的使用者拥有此属性的setter,以便他们可以将日志重定向到自己的TextWriter并酌情处理消息


这有意义吗?

如果我理解正确,你正在制造一场噩梦来维持

您的程序集不应该知道是谁在使用它。想象一下,明天会有另一个使用程序集的上下文,您必须再次更改代码并添加更多本来不应该存在的依赖项

总之,您可以创建一个OneError事件,在该事件上调用程序集的使用者为其指定的相应委托,或者至少执行与System.Console.Out类似的操作;也就是说,您创建了一个TextWriter类型的属性,默认情况下用于记录所有错误,但允许程序集的使用者拥有此属性的setter,以便他们可以将日志重定向到自己的TextWriter并酌情处理消息


这有意义吗?

可能的重复:实际确定它是否在Web上下文中:if System.Web.HttpContext.Current!=null//我们这里可能重复:实际上是为了确定它是否在Web上下文中:if System.Web.HttpContext.Current!=空//我们在这里是的,你是对的,这不是真实的方式拉拉,但我现在需要的是强大的直-solution@EvgeniyK既然您将走这条路,请确保consumer WinService设置为允许服务与桌面交互,因为我非常确定您将调用MessageBox。控制面板->管理工具->服务右键单击您的服务->属性->登录->勾选允许服务与桌面交互HMM您再次错过我的目标=我不想显示消息,我只想知道我在哪里?!我的基本目标可能是通过wcf wire为silverlight适当的格式抛出异常,可能是一些elseYes,你是对的,这不是真实的方式la la la la,但我现在需要的是强大的直线-solution@EvgeniyK既然你要走这条路,请确保consumer WinService设置为允许服务与桌面交互,因为我非常确定您将尽情地调用MessageBox。控制面板->管理工具->服务右键单击您的服务->属性->登录->勾选允许服务与桌面交互HMM您再次错过我的目标=我不想显示消息,我只想知道我在哪里?!我的基本目标可能是通过wcf wire为silverlight适当的格式抛出异常,可能是其他一些