3

これが私のコードです。VS2012C#Expressは、インターフェイスPISDK._DEventPipeEventsの2つのメンバーが実装されていないことについて不平を言っています。これは、ここにすばやく貼り付けられます。

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

私はここで途方に暮れています、どんな助けでもいいです。

4

2 に答える 2

5

実装では、インターフェイスで小文字ではなく大文字を使用OnOverFlowします。Fメソッドを呼び出す必要がありますOnOverflow

于 2012-09-29T03:16:31.663 に答える
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(); 
} 
于 2012-09-29T05:55:17.757 に答える