Ich habe einen Namespace in einem referenzierten Projekt, Project.Base
, und jemand dachte, es wäre eine gute Idee, ihre eigene generische List-Klasse in diesem Namespace zu deklarieren.Warum werden Namespaces nicht intuitiv verwendet?
Jetzt habe ich eine Code-Datei, die aus beginnt:
using System.Collections.Generic;
using Project.Base.Sub;
Der Project.Base
Namespace wird eigentlich nie offiziell verwendet wird; nur ein geschachtelter Namespace darin. System.Collections.Generic
ist formell verwendet. Aber aus irgendeinem seltsamen Grund, wenn ich eine Methode deklariere, deren Rückgabetyp List<T>
ist, interpretiert sie das als anstatt als System.Collections.Generic.List<T>
!
Dies scheint unglaublich kontraintuitiv zu mir. Weiß jemand, was vor sich geht und wie man es repariert?
EDIT zu reproduzieren:
using System;
using System.Collections.Generic;
using Project.Base.Sub;
namespace Project.Base
{
public class List<T> { }
}
namespace Project.Base.Sub { }
namespace Project.Base.Sub2
{
public class P
{
public static void Main()
{
var list = new List<int>();
Console.WriteLine(list.GetType().Namespace);
Console.Read();
}
}
}
(. Beachten Sie, dass der Code in Frage in einem anderen Unternamensraum von Project.Base ist Dies scheint bedeutend zu sein.)
Konnten Sie den Code für den Namespace Project.Base.Sub veröffentlichen? Oder zumindest der Anfang –
In welchem Namensraum existiert der Code, der auf die 'List' verweist? –
'Namespace Project.Base { \t public class Liste {}} Namespace Project.Base.Sub {} Namespace Foo { \t System.Collections.Generic verwendet wird; \t mit Project.Base.Sub; \t \t public class P \t { \t \t public static void Main() \t \t { \t \t \t var list = new List (); \t \t \t System.Console.WriteLine (list.GetType(). Namespace); \t \t} \t} } 'Ihr Problem wie angegeben kann nicht reproduziert werden. ** Postleitzahl, die das Problem tatsächlich reproduziert **. –