webForumDet fria alternativet

using System; märkligt

.NETur .NET

4 svar · 303 visningar · startad av kristoffer

kristofferMedlem sedan juni 20001 257 inlägg
#1

Jag har kopierat dll-filen MyProject.dll från ett projekt och skapat en referens till denna. Det är inga problem att skriva:

string s = MyProject.Foo.Bar.GetMyString();

Däremot fungerar inte:

using MyProject;
string s = Foo.Bar.GetMyString();

Dock fungerar följande:

using MyProject.Foo;
string s = Bar.GetMyString();

Samma sak är det ju med using System;:

Fungerar:

string s = System.IO.Path.GetFileNameWithoutExtension("foo.htm");

Fungerar inte:

using System;
string s = IO.Path.GetFileNameWithoutExtension("foo.htm");

Det märkliga är att vissa klasser går att referera till utan att inkludera System:

override protected void OnInit(EventArgs e)
{
	InitializeComponent();
	base.OnInit(e);
}

Här behövs inte System.EventArgs (som ju är klassen som refereras).

Idéer?

spangoMedlem sedan juni 20008 205 inlägg
#2

När du importerar en namnrymd med using, får du bara in de klasser som finns i namnrymden, inte några undernamnrymder. Du måste importera varje namnrymd för sig.

DinoMedlem sedan sep. 20011 914 inlägg
#3
namespace System
{
   public class EventArgs
   {
      ...
   }

   public struct DateTime 
   {
      ...
   }
}

namespace System.IO
{
   public sealed class File
   {

   }
   public sealed class Path
   {

   }
}

Så genom att skriva IO.Path så ser du att du inte kommer rätt för det finns ju ingen namespace som heter IO.

kristofferMedlem sedan juni 20001 257 inlägg
#4

Det måste ju betyda att jag inte kan referera till metoder i MyProject på samma sätt som jag gör i MyProject: I MyProject skriver jag:

Foo.Bar.GetMyString();

Det innebär alltså att jag måste ersätta ovanstående kod i det nya projektet med:

MyProject.Foo.Bar.GetMyString();

och det måste göras varje gång jag använder MyProject i det nya projektet.

spangoMedlem sedan juni 20008 205 inlägg
#5

Mja, ett alternativ är ju att importera rätt klasser/namespace också. using MyProject.Foo.Bar; string s = Bar.GetMyString();

128 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)