2016-08-19 1 views
0

Ich habe Projekt B je nach Projekt A, die eine Bibliothek ist, die ihre eigenen Abhängigkeiten hat.Verknüpfungsabhängigkeiten einer C# -Bibliothek

Im Projekt A ich verweisen auf die Baugruppen, die Dependency1Base<T> und Dependency2Class definieren, und definieren MyClass wie folgt aus:

namespace MyNamespace 
{ 
    public class MyClass: Dependency1Base<Dependency2Class> 
    { 
    } 
} 

Im Projekt B ich Referenz nur Projekt A und versuchen, Instanz MyClass

namespace MyNamespace 
{ 
    public class B 
    { 
     public void main() 
     { 
      var myInstance = new MyClass(); 
     } 
    } 
} 

Projekt A baut sich gut, aber wenn ich versuche, Projekt B zu bauen, erhalte ich eine Fehlermeldung mir, dass Dependency1Base und Dependency2Class in einer Baugruppe definiert sind, die nicht referenziert ist. Ich frage mich, ob es eine Möglichkeit gibt, diese Definitionen im Projekt A zu verlinken, so dass ich diese Referenzen nicht zum Projekt B hinzufügen muss? oder muss ich immer die Abhängigkeiten des Projekts A in jedem anderen Projekt, das MyClass verwendet, referenzieren?

+0

Warum möchten Sie keine Referenz in Projekt 'B' hinzufügen? –

+1

Die Tatsache, dass 'MyClass' von' Dependency1Base erbt, ist Teil der öffentlichen Schnittstelle von 'MyClass'. Wenn Sie' MyClass' verwenden wollen, müssen Sie auf die Assembly verweisen, in der 'Dependency1Base' und' Dependency2Class' stehen sind festgelegt. – Blorgbeard

+0

@Blorgbeard also, um eine Klasse zu verwenden, die in einer referenzierten Assembly definiert ist, muss ich immer auf alle Assemblies verweisen, die ihre Vorgängerklassen definieren? –

Antwort

0

Ja, Sie müssen auf alle Klassen oder Objekte verweisen, die Sie in Ihrem Projekt verwenden. Aber Sie müssen nicht mehr darauf verweisen.

Wenn Sie eine Klasse C, die von B erbt, die sich von A erbt:

In C, müssen Sie B verweisen, und wenn Sie einige Eigenschaften oder Methode verwenden, die von A kommen, müssen Sie A Referenz sowie

In B, müssen Sie A

In `A verweisen, müssen Sie nichts verweisen.