Announcement

Collapse
No announcement yet.

Namespace-Problem bei eigenen Controls

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Namespace-Problem bei eigenen Controls

    Hallo Experten

    Seit anfangs Jahr verfolgt mich folgendes Problem:

    Wenn ich einen eigens erstellten Control aus der Toolbox in den Form-Designer herüberziehe, fügt der Designer im Hintergrund in der MainForm.Designer.cs die entsprechend dazu nötigen Codezeilen ein, jedoch kriege ich beim Erstellen der Applikation dann immer folgenden Fehler:

    Der Typname "lib" ist im Typ "TestApp.TestApp" nicht vorhanden.



    Da ich durch Google, MSDN und Co. leider keine Lösung dazu fand, tüftelte ich ein wenig mit den vom Designer erstellten Code herum. Dieser sieht original so aus:

    [highlight=c#]this.directoryTreeView1 = new TestApp.lib.controls.DirectoryTreeView[/highlight]

    So änderte ich ihn ein wenig ab:
    [highlight=c#]this.directoryTreeView1 = new global::TestApp.lib.controls.DirectoryTreeView[/highlight]

    Und es funktionierte fehlerfrei.

    Allerdings schon bei der kleinsten Änderung schreibt der Designer wieder den Originalcode hinein. Jedes mal nun für alle Controls die Codezeilen anpassen zu müssen, scheint mir ziemlich sinnfrei.
    Ich vermute, dass dieses Problem mit einer kleiner Einstellung in Visual Studio behoben werden könnte, allerdings fand ich keine.

    Kennt jemand dieses Problem respektive die Lösung dazu?


    Vielen Dank für alle Hilfestellungen!

    Gruss Snowfox
    Zuletzt editiert von Snowfox; 12.01.2009, 23:50. Reason: Syntax-Highlighting vergessen...

  • #2
    Hast du eine Klasse die TestApp heißt und einen Namespace der TestApp heißt? Das wäre unglücklich.

    So wie ich das Auflösen von Namespaces verstehe versucht der Compiler erst einen Namespacebestandteil auf den lokalste Namen mit dieser Entsprechung aufzulösen. Heißt je nachdem wo du den Code stehen hast hält er TestApp in TestApp.lib.controls.DirectoryTreeView für die Klasse obwohl du eigentlich den Namespace gemeint hast. Das umgehst du eben in dem du das global Keyword benutzt wodurch du den Compiler anweist bei der Namespacenamensauflösung wirklich global anzufangen.

    Ich würde dir empfehlen entweder Klasse oder Namespace umzubenennen. Ist, meiner Meinung nach, eh schlechter Stil und führt, wie du siehst, zu Problemen.

    PS. Wo wir schonmal beim Stil sind. Ich finde Namespaces sollte man auch durchgängig in PascalCase schreiben und nicht mit Kleinbuchstaben beginnen.
    Zuletzt editiert von Ralf Jansen; 13.01.2009, 00:51.

    Comment


    • #3
      Originally posted by Ralf Jansen View Post
      Hast du eine Klasse die TestApp heißt und einen Namespace der TestApp heißt? Das wäre unglücklich.
      Manchmal ist doch der Fehler direkt vor den Augen und ich sehe ihn nicht. Habe die Klasse umbenannt und jetzt funktioniert es. Vielen Dank für deine Hilfe!

      Originally posted by Ralf Jansen View Post
      PS. Wo wir schonmal beim Stil sind. Ich finde Namespaces sollte man auch durchgängig in PascalCase schreiben und nicht mit Kleinbuchstaben beginnen.
      Danke für den Tipp, werde mir das angewöhnen.

      Comment

      Working...
      X