Сделать абстрактные методы доступными для подклассов - PullRequest
0 голосов
/ 08 июля 2019

Я хочу иметь возможность использовать метод 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 голосов
/ 08 июля 2019

Во-первых, ваш код недействителен C #.

Во-вторых, если вы хотите, чтобы метод был доступен везде, вам, вероятно, понадобится public static.Чтобы реализовать метод public static, вам нужно сначала пересмотреть свой жизненный выбор, поскольку в классе Agent это выглядит как плохой дизайн и нарушение принципов ООП.Если вы все еще решаете, что вам это нужно, то что-то вроде этого должно работать:

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");
   }
}
0 голосов
/ 08 июля 2019

Может быть, это поможет?

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 
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...