【发布时间】:2019-02-18 12:25:11
【问题描述】:
我有一个 dll 文件,其中包括从基类继承的各种派生类,并且该基类有一个名为“Run”的虚拟方法,并且在派生类中没有覆盖的“Run”方法。现在,方法 Run 的行为在特定情况下发生变化,我想申请所有派生类,所以如果我想改变那个行为,通常我必须创建各种自定义派生类类,这些类继承自派生类并覆盖“Run”方法.如果派生类的数量很多,会造成重复源。请注意,我无权修改该 dll 文件中现有的任何内容。
dll 文件:
public abstract class Animal
{
public virtual void Run()
{
Console.WriteLine("Hello 1");
}
}
public class Dogs : Animal
{
//do other thing.
}
public class Cat : Animal
{
//do other thing.
}
客户端通常:
public class CusTomDogs : Dogs
{
public override void Run()
{
Console.WriteLine("Hello 2");
}
}
public class CusTomCat : Cat
{
public override void Run()
{
Console.WriteLine("Hello 2");
}
}
是否有可能在不创建自定义每个派生类的情况下更改行为“base.Run()”方法?
【问题讨论】:
-
你的意思是
base.Run()? -
我不明白你的意思。如果你想要狗和猫的特定行为,你当然需要实施特定的行为。通用的运行方法应该如何做任何具体的事情?
-
谢谢,这是我的本意。
-
@Cid 你读过这个问题吗?
-
@J.vanLangen 谢谢,但正如我所说,我没有编辑现有源代码的许可,我所拥有的只是我可以在客户端实现。
标签: c#