简体   繁体   English

将VB.NET转换为C#接口

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM