使抽象方法可用于子类

时间:2019-07-08 09:20:50

标签: c# oop

我希望能够通过程序在抽象类RaiseMessage上以及其他类上使用方法AgentBase

public class MNyTestAgent: AgentBase
{
   RaiseMessage("hey", "hey")

   var a = new Foo();
}

public class Foo
{
   public Foo()
   {
      RaiseMessage("","") -<< how do i use it here 
   }
}

2 个答案:

答案 0 :(得分:0)

首先,您的代码不是有效的C#。

第二,如果您想让其他地方都可以访问的方法,则可能需要public static。要实现public static方法,您需要首先重新考虑自己的生活选择,因为在Agent类中这样做似乎是不良的设计并违反了OOP原则。如果您仍然认为自己需要它,则应该可以执行以下操作:

public abstract class AgentBase
{
   public static RaiseMessage(string title, string message)
   {
        // Implementation.
   }
}

public class MNyTestAgent: AgentBase
{
    public MNyTestAgent()
    {
        AgentBase.RaiseMessage("hey", "hey");
    }

}

public class Foo
{
   public Foo()
   {
      AgentBase.RaiseMessage("hey", "hey");
   }
}

答案 1 :(得分:-1)

这可能有帮助吗?

public class MNyTestAgent: AgentBase
{
   RaiseMessage('hey', 'hey')

   var a = new Foo(this);
}

public class Foo
{
   public Foo()
   {

   }

   public Foo(AgentBase base)
   {
      base.RaiseMessage('','') -<< how do i use it here 
   }
}