2016-06-05 5 views
-1

Ich müde zu Unit-Tests für ein Unity3D-Projekt zu schreiben. Es gibt dieses große Problem mit MonoBehaviours, was es ziemlich schwer macht. Um dieses Problem zu lösen, habe ich this Tutorial verwendet, um ein Objektkonstrukt namens Humble Object zu machen.`#region ... Implementierung` von Schnittstellen funktioniert nicht

Im Tutorial Dieser Code wurde (ich es vereinfacht):

public class Something : ISomething 
{ 
    #region ISomething implementation 

    void Test1() { 
    // do something 
    } 

    #endregion 

    void Test2() { 
    Test1(); 
    } 
} 

Wie ich es bekommen, das sollte zu entsprechen:

interface ISomething 
{ 
    void Test1(); 
} 

public class Something : ISomething 
{ 
    public void Test1() { 
    // do something 
    } 

    void Test2() { 
    Test1(); 
    } 
} 

Aber wenn ich schreibe, dass der erste Code und versuchen, zu kompilieren, ich diese Fehlermeldung: (die zweite macht den Job)

[...] The type or namespace name `ISomething' could not be found. Are you missing a using directive or an assembly reference? 

Antwort

5

Sie scheinen zu glauben, dass die Verwendung von #region ISomething implementation definiert tatsächlich die Schnittstelle.

Es tut es nicht. #regions have no effect on the code. They are just informational.

Sie müssen die Schnittstelle tatsächlich wie in Ihrem zweiten Beispiel definieren (und sie mindestens so zugänglich machen wie die implementierende Klasse, in diesem Fall public).

3

Wie ich es bekommen, das sollte zu entsprechen:

NO, ist es gar nicht. Sie müssen zuerst die Schnittstelle erstellen und deshalb wird der Fehler angezeigt. Region ist nur Code Markup für besseren Redierbarkeitszweck.

Verwandte Themen