System.Web.dll引用System.Windows.Forms?

时间:2009-04-06 13:58:36

标签: asp.net winforms

我从朋友那里听说asp.net依赖/使用Windows表单类。我试图找出可能是哪一堂课。

我发现的唯一课程是System.Web.UI.WebControls.FontInfo
属性public string[] Names
具有属性Editor("System.Windows.Forms.Design.StringArrayEditor--snip")

是否有来自System.Web.dll的Windows.Forms.dll的引用?

5 个答案:

答案 0 :(得分:2)

我认为System.Web,Version 2.0.0.0和System.Windows.Forms都有一个引用。

在Reflector中查看System.Web.Compilation.ResXBuildProvider.GetResourceReader(Stream)。
第一行: ResXResourceReader reader = new ResXResourceReader(inputStream); ResXResourceReader来自System.Windows.Forms,版本2.0.0.0

我很好奇,因为我在Visual Studio的已加载模块窗口中注意到了System.Windows.Forms。

ildasm System.web.dll / out = System.Web.il让我快速搜索System.Windows.Forms引用。我无法从反射器中快速找到一种方法。

答案 1 :(得分:1)

没有引用,也没有System.Windows.Forms。

StringArrayEditor是System.Design程序集中的UITypeEditor。除非在设计时使用,否则它将被加载,否则它将被“懒惰加载”。

答案 2 :(得分:1)

首先,我不确定这样的存在。

但Namespace或classname并不一定意味着您需要对Windows.Forms.dll的引用。您可以在Windows.Forms.dll之外的程序集中定义“System.Windows.Forms.Design.StringArrayEditor”。

答案 3 :(得分:1)

如果您在方便的Reflector工具中查看System.Web程序集,您将看到确实存在从System.Web到System.Windows.Forms的引用。但是,如果您使用Reflector的其中一个插件将反向工程代码导出到文件(例如FileGenerator),然后搜索它,则不会实际使用System.Windows.Forms。由于.Net运行时只在实际需要时加载程序集,因此永远不应该通过任何System.Web的使用来加载WinForms程序集。

答案 4 :(得分:-1)

将我加入怀疑论者名单。但更重要的是,这并不重要。 .Net框架的设置方式,用于链接添加或删除与框架一起提供的任何核心程序集的依赖性,不会以任何有意义的方式真正影响性能。