2009-04-03 13 views
3

Wenn ich keinen Namespace in meine Klassen lege (vs.net 2008), in welchem ​​Namespace werden meine Klassen aufgebaut?Welchen Namespace sind meine Klassen, wenn ich keinen Namespace einstelle?

update Es ist seltsam, wenn ich einen Namespace hinzufügen, kann ich nicht scheinen, die Klassen Methoden von meinem Benutzer-Steuerelement zu verweisen.

Wenn ich explizit einen Namespace einfüge und ein 'using ...' in meine Kontrolle einfüge, kann ich es immer noch nicht sehen!

Wie kann das sein?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Configuration; 
/// <summary> 
/// Summary description for Globals 
/// </summary> 
public class Globals 
{ 
    public Globals() 
    { } 


    public static string ConnectionString 
    { 
     get 
     { 
      return ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString; 
     } 
    } 

} 

Meine Kontrolle:

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 


public partial class MyStats : System.Web.UI.UserControl 
{ 




    protected void Page_Load(object sender, EventArgs e) 
    { 


    //etc. 
+0

Ist Ihre Klasse in einem separaten Projekt von der Benutzersteuerung oder sind sie im selben Projekt? –

+0

Sie können auch etwas Code posten - das hilft uns, herauszufinden, was vor sich geht. –

+0

Ok Ich postete einen Code, ich hatte zuvor einen Namespace in der globals-Klasse, aber es funktionierte immer noch nicht, als ich ihn in meiner Kontrolle referenzierte. – Blankman

Antwort

4

Wenn Sie bieten keinen Namespace dann Ihre Art keinen Namensraum hat. Denken Sie daran, dass Namespaces nach dem Kompilieren keine Bedeutung haben. Sie werden einfach an den Anfang des Namens Ihres Typs angehängt, um einen längeren Namen zu erstellen, der eine größere Wahrscheinlichkeit hat, eindeutig zu sein.

Edit: Ich denke, dass Sie zwei separate Assemblies haben und man sollte die andere verweisen, aber es ist nicht. Wenn sich zwei Projekte in einer einzigen Lösung befinden, zeigt der Klassen-Viewer alle Typen aus allen Projekten an, aber das bedeutet nicht notwendigerweise, dass Referenzen ProjectB sind. Um die Typen von ProjectB in zu verwenden, müssen Sie sicherstellen, dass eine Projektreferenz existiert.

+0

"... dann hat Ihr Typ keinen Namespace" Nicht ganz, sie werden in den globalen Namespace http://msdn.microsoft.com/en-gb/library/z2kcy19k.aspx gestellt – weston

1

Wie Sie gesagt haben, diese Klasse wird keinen Namespace haben, sie wird ohne eine using-Klausel zugänglich sein.

Namespaces ist ein Merkmal für die Ordnung auf Ihren Klassen setzen, durch die Klassifizierung, meist nach ihrem funcionality

EDIT

Nach Ihrem Update, ich denke, dass Ihre „global“ Klasse vielleicht Schwierigkeiten setzen, weil der globalen :: Klausel ... würde es Ihnen etwas ausmachen, den Namen der Klasse zu ändern, nur um zu sehen, ob es funktioniert?

Verwandte Themen