不实现接口成员Error

时间:2012-09-29 03:12:05

标签: c# api interface implementation

这是我的代码,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);
        }
    }
}

我在这里不知所措,任何帮助都很好。

2 个答案:

答案 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(); 
}