【问题标题】:Overriding method from library库中的覆盖方法
【发布时间】:2012-04-07 19:12:17
【问题描述】:

我的 C# 项目引用的库中有一个虚拟方法。如何在我的应用程序的另一个类中覆盖此方法?

例子:

namespace TheLibary
{
   class SomeClass
   {
      public virtual void TheMethod()
      {
           //Do Stuff
      }
   }
}

然后在我的项目中:

using theLibary;
namespace TheProject
{
   class SomeClass
   {
       public override <Help>
   }
}

编辑: 困惑和完全忘记这个类不是从库类继承的让我搞砸了,已经很晚了:)

【问题讨论】:

  • 您可以观看:stackoverflow.com/questions/1230219/…>

标签: c# methods overriding virtual


【解决方案1】:

在开始任何严肃的编码之前,您应该先学习一下 OOP(尤其是继承)。为了快速参考,下面是一个如何覆盖方法的示例:

namespace TheDll
{
    public class SomeClass
    {
        public virtual void TheMethod()
        { }
    }
}

namespace TheProject
{
    public class DerivedClass : SomeClass
    {
        public override void TheMethod()
        { }
    }
}

您应该注意到覆盖方法的签名(包括其名称)必须相同。另一方面,派生类可能(并且为了清楚起见通常应该)以不同的方式命名。

【讨论】:

  • 我了解如何以这种方式覆盖方法,但我想知道它是否可能来自不同的 dll。
  • 是的。在上面的示例中,DerivedClass 可以在与 SomeClass 不同的程序集中定义,前提是 SomeClass 被声明为 public。
  • 那么奇怪的是,我是在使用 XNA 来制作我的应用程序吗,它有一个名为 BeginDraw(GameTime) 的方法,而我的 dll 即时引用(Neoforce Controls)也有一个 BeginDraw(gameTime)
  • 你需要从一个类派生来覆盖它的方法。你能粘贴你的类声明的样子吗?如:public class MyClass : BaseClass。它是否有 : 后跟另一个类名(基类)?
  • 我的 dll 看起来像公共类 Manager : DrawableGameComponent,我的项目类看起来像公共类 MyGame : Application
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
相关资源
最近更新 更多