【问题标题】:Polymorphism broken when changing web site project to web application project将网站项目更改为 Web 应用程序项目时,多态性被破坏
【发布时间】:2010-10-24 11:17:53
【问题描述】:

您好,

我刚刚在 VS 2010 中将一个 ASP.NET 网站项目转换为 Web Application Project。在我运行应用程序之后,虽然我的类多态性似乎被破坏了。我不知道为什么会发生这种情况。

所以在下面的代码中,当我调用 base.OnLoad(e) 时,我在基类中遇到错误,因为变量 myString 为空。事实上,基类的所有变量都是空的。我可以的

base.myString = this.myString;

之前

base.OnLoad(e);

但这对我来说似乎不是多态的。


代码:

public partial class FormA : Web.ClassB 
{
    protected override void OnLoad(EventArgs e)
    {
        myString = "TEST";

        base.OnLoad(e);
    }
}

public class ClassB 
{
    protected String myString;

    protected override void OnLoad(EventArgs e)
    {
        // Class C has a virtual OnLoad method (not shown here)
    }
}

【问题讨论】:

  • “...我的类多态性破坏了”的可能性有多大?您的代码中是否更有可能出现错误/误解?
  • 也许这是一个错误,但我所做的只是更改 Web 项目类型。此代码在网站项目中运行良好。当我查看 FormA.base 时,所有变量都为空,鉴于这些类的代码没有更改,什么会导致这种情况发生?

标签: asp.net visual-studio-2010 polymorphism


【解决方案1】:

看起来 ClassB 位于命名空间或另一个类的成员中。你的命名空间/范围是否正确,因为我遇到了将网站转换为网络应用程序之类的问题。

【讨论】:

  • 啊,我想你可能已经把这个钉在了头上。但我仍然感觉很好,陷入了两难境地。在我的解决方案中,我有 3 个项目(3 个单独的程序集),我的 B 类在类库中(命名空间 =“Lib”),A 类在 Web 项目中(默认命名空间 =“Web”)。我必须为两个项目使用相同的命名空间吗?可以是“Base.Lib”和“Base.Web”吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
  • 2010-11-06
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
相关资源
最近更新 更多