问题描述
publiceventclsOPC.DataChangeEventHandlerDataChange{[MethodImpl(MethodImplOptions.Synchronized)]add{this.DataChange+=(clsOPC.DataChangeEventHandler)Delegate.Combine(this.DataChange,value);}[MethodImpl(MethodImplOptions.Synchronized)]remove{this.DataChange+=(clsOPC.DataChangeEventHandler)Delegate.Remove(this.DataChange,value);}}protectedvirtualvoidDataChangeEvent(intwTransID,intiItemCount,int[]iClientHds,object[]vValues,FILETIME[]ftTimeStamps,short[]wQualities,int[]pErrors){MyOPCDATAChangeList[]oPCDataChangeList=this.GetOPCDataChangeList();this.DataChange(this,newOPCDataChangeEventArgs(oPCDataChangeList));}
解决方案
解决方案二:
你的add是从哪里学的呢?贴出来你这样写的理由。
解决方案三:
编译错误中,提示的很清楚了。为保证安全使用event,不能这样编程。
解决方案四:
事件触发调用只能在当前类操作,派生类也无法调用。建议你在基类里定义一个protected修饰的触发事件方法,让派生类调用
解决方案五:
还有,接口定义的事件不能显式实现,会无法触发调用。
解决方案六:
如果写add、remove方法,那种代码根本不是你这种编程逻辑。那种代码,通常是针对一个EventList集合来操作。你抄了一个四不像的方法接口,里边的两行代码都完全是自己想象出来的。你使用了根本不该访问的语句。
解决方案七:
解决方案八:
我不知道你的这些代码是从哪里学来的诡异代码,只能猜一下。学习c#编程的基础,不要用“反编译工具”来学。那些工具往往打印出来诡异的代码,并不是正规代码。
解决方案九:
学习了。[MethodImpl(MethodImplOptions.Synchronized)]这种东西,貌似是什么框架里面的吧?
解决方案十:
不知道在纠结什么,编译器不让你这么用,那就换个写法呗要不你就到微软去当C#项目主管,让你的手下按你的写法改改编译器
解决方案十一:
引用1楼sp1234的回复:
你的add是从哪里学的呢?贴出来你这样写的理由。
这是反编译出来的、就这三行报错了,不知道该如何修改了