Kann nicht auf die implementierte Eigenschaft zugreifen (über die Schnittstelle)

8

Ich habe eine Schnittstelle mit Eigenschaften:

%Vor%

Dann setze ich es um:

%Vor%

Aber wenn ich auf AutoDetachOnFinished innerhalb derselben Klasse zugreifen muss, erscheint ein Compilerfehler:

%Vor%

Die Fehlermeldung:

  

14 'MEngine.Entities.EntityModifier.SingleValueEntityModifier' tut dies   enthält keine Definition für 'AutoDetachOnFinished' und keine Erweiterung   Methode 'AutoDetachOnFinished' akzeptiert ein erstes Argument vom Typ   'MEngine.Entities.EntityModifier.SingleValueEntityModifier' könnte sein   gefunden (fehlt eine using-Direktive oder eine Assembly   Referenz?)

Ich habe 2 Fragen:

  1. Warum beschweren sich die Compiler, wenn ich IEntityModifier. s lösche (also würde IEntityModifier.Update zu Update werden, auf jede implementierte Methode angewendet werden)?
  2. Warum kann ich nicht auf AutoDetachOnFinished ?
  3. zugreifen?
Luke Vo 08.01.2013, 10:20
quelle

3 Antworten

12

Sie haben diese als explizite Schnittstellenimplementierungen implementiert, was bedeutet, dass Sie nur darauf zugreifen können durch eine Variable vom Typ interface - IEntityModifier .

Entweder tun Sie das:

%Vor%

oder entfernen Sie den Namen der Schnittstelle aus der Implementierung:

%Vor%     
Oded 08.01.2013, 10:22
quelle
2

Weil Sie die Schnittstelle explizit implementieren.

%Vor%

Sie müssen auf die Schnittstelle umschalten, um auf explizite Implementierungen zugreifen zu können. Vielleicht nicht was du willst. Entfernen Sie also den Schnittstellennamen aus der Implementierung

%Vor%     
Michael Viktor Starberg 08.01.2013 10:25
quelle
1

Konvertieren Sie this.AutoDetachOnFinished in das Objekt vom Typ IEntityModifier, während Sie eine explizite Schnittstellenimplementierung durchführen. hier einige Erklärungen.

%Vor%     
Zara_me 08.01.2013 10:59
quelle

Tags und Links