开始在显式接口成员上调用
本文关键字:成员 调用 接口 开始 | 更新日期: 2023-09-27 18:30:26
使用"经典"方法实现,我通常像这样执行 BeginInvoke:
private delegate void FooDelegate();
public void Foo()
{
if(InvokeRequired)
{
BeginInvoke(new FooDelegate(Foo));
return;
}
// Do what you want here
}
当方法是显式接口成员声明时,如何做同样的事情?喜欢:
public void IFace.Foo()
{
// Need to BeginInvoke here
}
这不起作用:
private delegate void FooDelegate();
public void IFace.Foo()
{
if(InvokeRequired)
{
BeginInvoke(new FooDelegate(IFace.Foo));
return;
}
// Do what you want here
}
您必须先将this
转换为IFace
:
var iface = (IFace)this;
BeginInvoke(new FooDelegate(iface.Foo));
由于您的实现是显式的,因此无法通过类实例访问方法 Foo。仅通过接口实例。这意味着您需要将实例this
转换为IFace
实例。然后你可以将该方法传递给BeginInvoke
:
var asIFace = (IFace)this;
BeginInvoke(asIFace.Foo));