如何为现有方法分配新操作?

时间:2015-02-03 09:51:01

标签: c# .net class methods instance

我在C#中创建了一个使用“Action”方法的类。

public void Action()
{

}

该方法为空,因为当创建类的新实例时,用户应该能够定义该方法的作用。一个用户可能需要该方法写入控制台,另一个用户可能希望它为变量赋值等等。有没有办法让我改变方法在其原始定义之外可以做的事情,沿着以下内容:

//Using the instance "MyClass1", I have assigned a new action to it (Writing to the console)
//Now the method will write to the console when it is called
MyClass1.Action() = (Console.WriteLine("Action"));

2 个答案:

答案 0 :(得分:4)

  

我有什么方法可以改变方法可以做的事情   其原始定义

不通过"命名方法"以及您在示例中使用它们的方式。如果您希望您的类能够调用用户定义的执行单元,您需要查看继承层次结构(通过虚拟方法在@CodeCaster回答中指定并覆盖它们),或者查看{{3} }。

您可以使用delegates代表:

public Action Action { get; set; }

像这样使用它:

var class = new Class();
class.Action = () => { /*Code*/ }

而且,当你想要调用它时:

if (class.Action != null)
{
   class.Action();
}

答案 1 :(得分:3)

通过使其成为抽象,继承该类并重写该方法。

public class FooBase
{
    public abstract void Bar();
}

public class Foo1 : FooBase
{
    public override void Bar()
    {
        // Do something
    }
}

public class Foo2 : FooBase
{
    public override void Bar()
    {
        // Do something else
    }
}