2009-05-13 5 views
2

Ok, so seit ich zu Version 2.5 Nunit verursacht mir alle Arten von Problemen, weil sie die statische Klasse Is in die nunit.framework eingeführt Namensraum.Wie setze ich einen Standard-Namespace für Klassen, wenn es zwei ähnliche Klassen in verschiedenen Namespaces gibt

Es wäre gut und gut, wenn Rhino.Mocks und ein paar andere Frameworks nicht auch eine statische Klasse Is verwenden würden. Also, wenn ich auf 2.5 upgrade, wird der größte Teil meines Codes, der Rhino-Mock-Constraints verwendet, nicht kompiliert.

Gibt es eine Möglichkeit, Visual Studio/den C# -Compiler auf der Projektebene zu konfigurieren, um zu wissen, dass, wenn ich Is ich meine den Namespace Rhino Mocks sage?

PS. Open-Source-Autoren, ich weiß, Sie lieben da fließende Interfaces, aber hören Sie auf, solche üblichen Wörter zu verwenden, wenn sie mit anderen Frameworks kollidieren werden! Wie wäre es mit einigen Schließungen mit Lambdas, die Sie immer noch so machen können wie myVar.Sould (be => be.True())?

Antwort

1

Ich weiß nicht, den NUmit Kontext aber vielleicht der Alias-Mechanismus kann Ihnen helfen:

namespace N1 
{ 
    class C { } 
} 

namespace N2 
{ 
    class C { } 
} 

namespace NamespaceDemos 
{ 
    using C1 = N1.C; 
    using C2 = N2.C; 
} 
+0

Siehe meine Antwort auf @McWafflestix, die in Zukunft gültig ist, aber nicht die Unvereinbarkeit loswerden, die mein Projekt bricht. –

-1

Versuchen Sie, die using Direktive.

+0

Nicht gut, ich habe bereits Code mit Rhino Mocks Is. NUnit hat jedoch die Is-Klasse zu seinem Basisverzeichnis hinzugefügt. Ich müsste durch meine Codebase einen Alias ​​hinzufügen, bevor ich die Rhino-Mocks Is benutzt habe. Könnte auch meine eigene Erweiterung an diesem Punkt schreiben. –

+0

Ich weiß, das klingt albern, aber haben Sie versucht, nur eine globale Suche und ersetzen Sie es mit dem voll qualifizierten Namen zu ersetzen? –

+0

Nun ja, das würde funktionieren, aber dann muss ich voll qualifizierte Rhino Mocks Is-Klassen (die ich oft benutze) nur so, dass Nunit seine "Is" -Klasse haben kann (die ich gar nicht verwende). .hässlich –

1

Verwenden Sie eine using alias directive an der Spitze Ihrer Dateien, um nicht qualifizierte Verweise auf Is zeigen Sie auf den Rhino-Typ.

Leider glaube ich nicht, dass es einen Weg gibt, dies auf Projektebene zu tun. Aber das ist zumindest besser als Suche & Ersetzen Sie alle Ihre Referenzen.