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 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 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.
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 Mja, ett alternativ är ju att importera rätt klasser/namespace också. using MyProject.Foo.Bar; string s = Bar.GetMyString();