| 

.NET C# Java Javascript Exception

1
Ich habe einen für mich trotz aller Versuche nicht lösbaren Compilier Fehler in einem UnitTest. Ich verwende NUnit und TypeMock. Ich möchte ein Event testen und habe folgenden Code geschreiben:
[Test,Isolated]
public void ProcessThresholdUnderrun_CallbackIsNull_RaisesEventOnUnderrun ()
{
.... vorbereitenden Arbeiten an Fake Objects

// set up the fake event
string resultingString = String.Empty;
string resultingServerName = String.Empty;
int resultingInt = 0;

opcClient.OnOPCCriticalValueUnderrun += (server, itemName, value) =>
{
resultingString = itemName;
resultingServerName = server;
resultingInt = value;
};

int currentItemValue = 100;

Isolate.Invoke.Event (() => opcClient.OnOPCCriticalValueUnderrun += null, opcServerName, opcItemName, currentItemValue);

// verify that FireOnCritcalValueUnderrun has been called with the correct Arguments
Assert.AreEqual (resultingString, opcItemName);
Assert.AreEqual (resultingServerName, opcServerName);
Assert.AreEqual (resultingInt, currentItemValue);
}


Der Compilerfehler lautet:

Die Eigenschaft, der Indexer oder das Ereignis "OnOPCCriticalValueUnderrun" wird von der Sprache nicht unterstützt. Rufen Sie die Accessormethode "XPRDS.OPCClient.OPCClient.add_OnOPCCriticalValueUnderrun (System.Action<string,string,dynamic>)" oder "XPRDS.OPCClient.OPCClient.remove_OnOPCCriticalValueUnderrun (System.Action<string,string,dynamic>)" direkt auf.

Ich habe keine Idee mehr was ich noch versuchen kann. Kann mir da jemand helfen?

Wäre echt toll!

Peter
News:
17.03.2011
mph 227 1 6
3 Antworten
1
Hallo Peter,

der Vollständigkeit halber und für die Nachwelt: ist die Antwort auf deine heute gestellte Frage auch die Lösung zu diesem Problem?
09.05.2011
Matthias Hlawatsch 13,2k 4 9
0
Beschwert sich der Compiler an der Stelle, wo Du die anonyme Methode definierst, oder bei Isolate.Invoke.Event()?

Hast Du mal probiert, ob Du entsprechend der Fehlermeldung OPCClient.add_OnOPCCriticalValueUnderrun aufrufen kannst statt "+="?

In welcher Sprache ist die Klasse OPCClient geschrieben? Wie lautet dort die Definition des Events OnOPCCriticalValueUnderrun?

Schau Dir auch mal hier und hier (beziehen sich leider auf den Fall Property bzw. Indexer statt Event, aber vielleicht führen sie trotzdem in die richtige Richtung).
17.03.2011
Matthias Hlawatsch 13,2k 4 9
0
...add_OnOPCCritical... -> add_On... ist "Methodengruppe", daher ist die Zuordnung nicht möglich
Die Compilermeldung erfolgt in der Klasse bei der Implementierung des events aus dem Interface
reichlich kryptisch

in der Testklasse erhalte ich die oben aufgeführte Fehlermeldung

in C# 4.0 (VS2010)

Danke für die Links werde ich mir ansehen.

Ich habe noch folgendes gemacht:


    ein Inteface erzeugt mit der Deklaration
    event Action<string, string, dynamic> OnOPCClientCriticalValueUnderrun;

    und in der Klasse das event wie folgt eingefügt
    public event Action<string, string, dynamic> OnOPCClientCriticalValueUnderrun;

    die Nutzung ist wie folgt
    private void FireOnCriticalValueUnderrun (string name, string itemName, dynamic value)
    {
    if (OnOPCClientCriticalValueUnderrun != null)
    OnOPCClientCriticalValueUnderrun (name, itemName, value);
    }



Peter
30.03.2011
mph 227 1 6

Stelle deine Event-Frage jetzt!