我无法找到在接口
中实现委托的方法我想得到这个:
public class SomeClass : ISomeInterface
{
public delegate void SomeCallback();
public SomeCallback callback;
public void SomeMethod()
{
callback.invoke();
}
}
public class MainClass
{
void Callback() { Console.WriteLine("Callback"); }
public void Start()
{
SomeClass s = new SomeClass();
s.callback = Callback;
s.SomeMethod();
}
}
但是在我创建类的实例" SomeClass"使用界面:
public class MainClass
{
void Callback() { Console.WriteLine("Callback"); }
public void Start()
{
ISomeInterface s = new SomeClass(); // <<<----
s.callback = Callback; // here will be an error :(
s.SomeMethod();
}
}
请帮助我:)
答案 0 :(得分:0)
如果要在没有外壳的情况下使用回调,则需要将回调移动到接口。请注意,您当前的实现具有callback
作为字段。要在界面中声明它,您必须使其成为属性。
因为属性实际上是方法,所以必须在具体类中实现该属性。使用自动属性可以在这里实现。
完成这些更改后,您可以仅使用界面设置并调用回调。
public delegate void SomeCallback();
public interface ISomeInterface {
SomeCallback callback { get; set; }
void SomeMethod();
}
public class SomeClass : ISomeInterface
{
public SomeCallback callback { get; set; }
public void SomeMethod()
{
callback.Invoke();
}
}
public class MainClass
{
void Callback() { Console.WriteLine("Callback"); }
public void Start()
{
ISomeInterface s = new SomeClass();
s.callback = Callback;
s.SomeMethod();
}
}