Преобразование интерфейса с делегатом из VB в C # - PullRequest
1 голос
/ 26 августа 2011

У меня есть интерфейс:

Public Interface ICSIItem

    Sub Initialize()
    Event AnswerValueChanged(ByVal sender As Object, ByVal e As NotebookAnswerChangedEventArgs)
    Property DataContext() As Object

End Interface

и конвертер http://www.developerfusion.com/tools/convert/vb-to-csharp/

public interface ICSIItem
{
    void Initialize();
    event AnswerValueChangedEventHandler AnswerValueChanged;
    delegate void AnswerValueChangedEventHandler(object sender, NotebookAnswerChangedEventArgs e);
    object DataContext { get; set; }
}

, и resharper говорит мне, что делегат не может быть в интерфейсе.

Этоis NotebookAnswerChangedEventArgs class

public class NotebookAnswerChangedEventArgs : System.EventArgs
{
    public string NewAnswer;

    public string PreviousAnswer;

    public NotebookAnswerChangedEventArgs(string newAnswer, string previousAnswer) : base()
    {
        this.NewAnswer = newAnswer;
        this.PreviousAnswer = previousAnswer;
    }
}

Не могли бы вы помочь с этим преобразованием и, пожалуйста, для лучшего сайта конвертера, потому что это очень плохо: /

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

C #, в отличие от VB.Net, не позволяет интерфейсу объявлять вложенные типы.Это включает в себя делегатов.Чтобы это исправить, просто переместите делегат AnswerValueChangedEventHandler за пределы интерфейса.

1 голос
/ 26 августа 2011
public interface ICSIItem {

   void Initialize();
   event EventHandler<NotebookAnswerChangedEventArgs> AnswerValueChanged;
   object DataContext { get; set; }

}

обратите внимание - ваши Eventargs поддерживают использование EventHandler - я думаю, что в таких случаях вы должны использовать EventHandler вместо того, чтобы заново определять своих собственных делегатов.

но я не знаю хороших конвертеров. Почему вы конвертируете в конце концов? Просто поместите ваш код VB.net в dll и используйте его из C # - если вы пишете новый, делайте это в C # и конвертируйте со временем по мере необходимости.

...