Ne pas implémenter l'interface membre d'Erreur
Voici mon code, VS2012 C# Express est de se plaindre de la non mise en œuvre des deux membres dans l'interface PISDK._DEventPipeEvents, qui est collé ici rapidement:
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);
}
}
et voici mon code:
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);
}
}
}
Je suis à une perte ici, toute aide est agréable.
OriginalL'auteur cdietschrun | 2012-09-29
Vous devez vous connecter pour publier un commentaire.
En plus de cas de mal dans le "dépassement", il semble que vous essayez d'appliquer les
public
modificateur d'accès à une interface explicite membre de mise en œuvre. Vous pouvez soit mettre en œuvre le membre implicitement comme un membre du public, ou explicitement, mais pas les deux.Implicite de mise en œuvre:
Mise en œuvre explicite:
vous êtes les bienvenus. Il m'a fallu un certain temps pour envelopper ma tête autour de ce concept quand j'étais novice en C#, mais maintenant que je le comprends, je l'utilise tout le temps. C'est un puissant et très sous-estimé technique.
OriginalL'auteur phoog
Votre application utilise
OnOverFlow
avec un capitalF
au lieu d'une minuscule une dans l'interface. La méthode doit être appeléeOnOverflow
.Ou clic droit sur l'interface
Foo : IFoo
et choisissezimplement the interface
, qui garantit la bonne orthographe.Yep. J'ai complètement oublié cette option.
OriginalL'auteur dasblinkenlight