[英]Convert VB.NET to C# interface
I need help in converting a VB.NET interface to one in C#. 我需要将VB.NET接口转换为C#接口的帮助。 The code below defines an Event and raises it in a method. 下面的代码定义一个Event,并在方法中引发它。
Public Event CampaignDetailSelected(ByVal listItem As ListItem) _
Implements ICampaignMaintenanceView.CampaignDetailSelected
...
RaiseEvent CampaignDetailSelected(DirectCast(lsbCampaignDetail.SelectedItem, ListItem))
The interface for it is: 它的接口是:
Public Interface ICampaignMaintenanceView
Event CampaignDetailSelected(listItem As ListItem)
...
End Interface
When I push the interface above through a converter, it converts the Event but also includes a delegate, which is not allowed in C#. 当我通过转换器将接口推入上方时,它会转换事件,但还会包含一个委托,这在C#中是不允许的。
Can anyone give me a hint? 谁能给我一个提示?
It is one of the many issues I've had with C# versus VB.NET, as much as I love C#, VB.NET makes events simpler. 这是我在C#和VB.NET上遇到的众多问题之一,尽管我很喜欢C#,但VB.NET使事件变得更简单。
// Placed outside of the class
public delegate void CampaignDetailSelectedEventHandler(ListItem listItem);
// Test class to show to convert from vb.net to C#
public class Test : ICampaignMaintenanceView
{
public event CampaignDetailSelectedEventHandler CampaignDetailSelected;
protected virtual void OnCampaignDetailSelected(ListItem listItem)
{
if (CampaignDetailSelected != null)
{
CampaignDetailSelected(listItem);
}
}
}
Your C# delegate and interface should look like: 您的C#委托和接口应类似于:
public delegate void CampaignDetailSelectedEventHandler(ListItem listItem);
public interface ICampaignMaintenanceView
{
event CampaignDetailSelectedEventHandler CampaignDetailSelected;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.