C# 从vb到c的带委托的面转换#

C# 从vb到c的带委托的面转换#,c#,vb.net,interface,vb.net-to-c#,C#,Vb.net,Interface,Vb.net To C#,我有接口: Public Interface ICSIItem Sub Initialize() Event AnswerValueChanged(ByVal sender As Object, ByVal e As NotebookAnswerChangedEventArgs) Property DataContext() As Object End Interface 和转换器 resharper告诉我委托不能在接口中 这是NotebookAnswerChang

我有接口:

Public Interface ICSIItem

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

End Interface
和转换器

resharper告诉我委托不能在接口中

这是NotebookAnswerChangedEventArgs类

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

    public string PreviousAnswer;

    public NotebookAnswerChangedEventArgs(string newAnswer, string previousAnswer) : base()
    {
        this.NewAnswer = newAnswer;
        this.PreviousAnswer = previousAnswer;
    }
}
您能帮我转换一下吗?请找一个更好的转换站点,因为它很差:/

公共接口ICSIItem{
public interface ICSIItem {

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

}
void初始化(); 事件处理程序AnswerValueChanged; 对象DataContext{get;set;} }
请注意-您的eventargs支持使用EventHandler-我认为在这种情况下,您应该使用EventHandler,而不是重新定义自己的委托

但我不知道有什么好的转换器。你到底为什么要皈依?只需将VB.net代码放在dll中,并从C#使用它-如果您编写了新代码,请使用C#,并根据需要随时间转换。

C#与VB.net不同,不允许接口声明嵌套类型。这包括代表。要解决此问题,只需将AnswerValueChangedEventHandler委托移动到接口外部

public delegate void AnswerValueChangedEventHandler(
  object sender, 
  NotebookAnswerChangedEventArgs e);

public interface ICSIItem {
  void Initialize();
  event AnswerValueChangedEventHandler AnswerValueChanged;
  object DataContext { get; set; }
}

VB.net中的接口是否允许声明嵌套类型?我不这么认为,但我不确定-我想VB.net知道EventHandler委托-仅此而已。@CKoenig是的。VB.Net允许在接口中嵌套类型声明。好的-今天我学到了一些东西。。。奇怪你为什么要用这样的东西。。。没关系,谢谢你
public delegate void AnswerValueChangedEventHandler(
  object sender, 
  NotebookAnswerChangedEventArgs e);

public interface ICSIItem {
  void Initialize();
  event AnswerValueChangedEventHandler AnswerValueChanged;
  object DataContext { get; set; }
}