2010-07-17 6 views
3

Si deux assemblages définissent tous les deux namespace A contenant class A1, alors les deux classes sont considérées comme des types uniques. A) Les deux espaces de nom sont-ils également considérés comme uniques?Avoir des problèmes lorsque deux des assemblages référencés définissent tous les deux le type A. A1

b) Si program P fait référence aux deux assemblages, comment créer une instance des deux types? A savoir, je continue à obtenir une erreur lorsque je tente de créer une instance de A.A1

using A; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      A1 a = new A1(); // error 
     } 
    } 
} 

c) Mais si program P définit également type B.A1, alors compilateur ne se plaint pas quand je déclare une instance de A1:

using A; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      A1 a = new A1(); // ok 
     } 
    } 

    class A1 { } 
} 

Le compilateur ne doit pas se plaindre puisqu'il ne peut pas savoir quelle version de A1 utiliser (A.A1 de l'un des assemblages référencés ou B.A1)?

Thanx

Répondre

1

deux ensembles Référencer ayant les mêmes espaces de noms et mêmes membres au sein de ces espaces de noms est un non-non complet (à savoir ne le font pas!). Vous avez le contrôle sur l'un ou l'autre des assemblys, assurez-vous que les espaces de noms racine sont différents pour les deux et vous pouvez ensuite désambiguïser les références aux membres dans la hiérarchie assembly/namespace.

Questions connexes