这是我的代码,VS2012 C#Express抱怨PISDK._DEventPipeEvents接口中的两个成员没有实现,这很快粘贴在这里:
namespace PISDK
{
[Guid("9E679FD2-DE8C-11D3-853F-00C04F45D1DA")]
[InterfaceType(2)]
[TypeLibType(4096)]
public interface _DEventPipeEvents
{
[DispId(2)]
void OnNewValue();
[DispId(1)]
void OnOverflow(object vtEvent, OverflowCauseConstants Cause);
}
}
这是我的代码:
class PointListEventPipeEventReceiver : PISDK._DEventPipeEvents
{
private PISDK.EventPipe eventPipe;
public PointListEventPipeEventReceiver(PISDK.EventPipe eventPipe)
{
this.eventPipe = eventPipe;
}
public void PISDK._DEventPipeEvents.OnNewValue()
{
Console.WriteLine("New value event");
handleNewValue(eventPipe);
}
public void PISDK._DEventPipeEvents.OnOverFlow(object vtEvent, PISDK.OverflowCauseConstants Cause)
{
throw new NotImplementedException();
}
private void handleNewValue(PISDK.EventPipe eventPipe)
{
Console.WriteLine("Handling new value");
Array eventObjs = eventPipe.TakeAll();
Console.WriteLine("eventObjs.Length==" + eventObjs.Length);
foreach (PISDK.PIEventObject piEventObj in eventObjs)
{
Console.WriteLine(piEventObj.EventData as PISDK.PointValue);
}
}
}
我在这里不知所措,任何帮助都很好。
答案 0 :(得分:5)
您的实施在界面中使用OnOverFlow
使用大写F
而不是小写的OnOverflow
。该方法应称为{{1}}。
答案 1 :(得分:4)
除了在“溢出”中出现错误外,您似乎正在尝试将public
访问修饰符应用于显式接口成员实现。您可以隐式地将该成员实现为公共成员,也可以显式实现,但不能同时实现两者。
隐式实施:
public void OnOverflow(object vtEvent, PISDK.OverflowCauseConstants Cause)
{
throw new NotImplementedException();
}
明确的实施:
void PISDK._DEventPipeEvents.OnOverflow(object vtEvent, PISDK.OverflowCauseConstants Cause)
{
throw new NotImplementedException();
}