C#中的替代内联接口实现
我想在C#中使用内联接口实现,但是阅读像这样或者这样的post我发现它不像Java那样。
假设这个界面:
public interface MyListener { void onHandleOne(); void onHandleTwo(); }
我将此接口作为参数传递:
myMethod(MyListener listener){ //some logic }
当我调用它时,我想像在java中一样进行内联实现:
myMethod(new MyListener () { @Override public void onHandleOne() { //do work } @Override public void onHandleTwo() { //do work } });
作为替代方案,我创建了一个实现yhis接口的类,并使用此类来调用我的方法:
public class MyImplementor : MyListener { public void onHandleOne() { //do work } public void onHandleTwo() { //do work } }
并调用我的方法: myMethod(new MyImplementor())
但是这个解决方案每次我都会调用这个方法时需要一个新类(对于不同的行为)可能有一种方法使用lambda或以某种方式这样做:
myMethod(new MyImplementor() =>{//handle my methods})
但是这个解决方案每次我都会调用这个方法需要一个新类(对于不同的行为)也许有一种方法使用lambda或者某种方式来做它就像
是的,给它一个委托参数并传递一个lambda。
public class MyImplementor : MyListener { private readonly Action handle1; private readonly Action handle2; public MyImplementor(Action handle1, Action handle2) { this.handle1 = handle1; this.handle2 = handle2; } public void onHandleOne() { handle1(); } public void onHandleTwo() { handle2(); } }
然后你可以用它
myMethod(new MyImplementor(()=>{//handle method1}, ()=>{//Handle method2});