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; }
}