SkarreMedlem sedan apr. 20012 427 inlägg Mitt "datalager" är kompilerat, ligger i bin-mappen och fungerar som det ska, men när jag skrev skelettet till ett affärslager och försökte kompilera detta så kajkade det ur. Jag har uppenbarligen inte hajat det där med namespaces riktigt.
The type or namespace name 'Data' does not exist in the class or namespace 'SDTS' (are you missing an assembly reference?)
data.dll
using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
namespace SDTS.Data
{
public class DbObject
{
}
}
business.dll (egentligen business.cs eftersom den inte kan kompileras)
using SDTS.Data;
namespace SDTS.Business
{
namespace News
{
public class NewsObject
{
}
}
}
JosefMedlem sedan mars 20023 561 inlägg Du kan inte ha ett namespace i ett annat namespace.
SkarreMedlem sedan apr. 20012 427 inlägg Uppenbarligen kan jag det eftersom filen kompileras om jag tar bort "using SDTS.Data;". Rätta mig om jag har fel men är inte nedanstående bara två olika sätt att göra samma sak på?
namespace SDTS.Business
{
namespace News
{
namespace SDTS.Business.News
{
Ett tips är att alltid inleda med versal om det är en klass, och med gemen om det är ett namespace.
Namespaces har man ju mest för att unvika krockar om man skulle råka använda klassnamn som redan finns.
Om man kan ha namespace i ett annat vet jag inte, men finns det nån större vits med det?
SkarreMedlem sedan apr. 20012 427 inlägg
Choronzon skrev:
Om man kan ha namespace i ett annat vet jag inte, men finns det nån större vits med det?
Att man kan ha ett namepace inuti ett annat är jag relativt säker på. Annars borde kompilatorn hojtat till tycker man. Och vitsen för min del är att få bättre struktur och ordning bland klasserna. Som sagt, det är väl bara två sätt att göra samma sak på?
Är det ingen som har lyckats klura ut varför jag får felmeddelandet jag nämnde i första inlägget?
GladhMedlem sedan maj 20012 812 inlägg
Och vitsen för min del är att få bättre struktur och ordning bland klasserna.
Eftersom du endast "bör" ha en klass per fil, så finns det ingen mening att ha namespace i namespace, eftersom din fil endast tillhöra 1 namespace, och då är det bäst att skriva ut det direkt.
- M
SkarreMedlem sedan apr. 20012 427 inlägg
Gladh skrev:
Eftersom du endast "bör" ha en klass per fil [...]
Det har jag faktiskt aldrig hört förut. Det blir en väldig massa dll:er om jag måste lägga varje klass i en egen fil. :o
renholmMedlem sedan apr. 20012 266 inlägg Inte nödvändigtvis, du kan kompilera flera filer till en dll.
nikoMedlem sedan juni 20022 599 inlägg
Skarre skrev:
Är det ingen som har lyckats klura ut varför jag får felmeddelandet jag nämnde i första inlägget?
Låter bara som om du glömt ange en referens till data.dll vid kompileringen?
csc /t:library /out:business [b]/r:<eventuell sökväg>\data.dll[/b] business.cs
Skarre skrev:
Som sagt, det är väl bara två sätt att göra samma sak på?
Ja.
SkarreMedlem sedan apr. 20012 427 inlägg
renholm skrev:
Inte nödvändigtvis, du kan kompilera flera filer till en dll.
Som då innehåller flera namespaces, så det blir exakt samma sak. ;)
SkarreMedlem sedan apr. 20012 427 inlägg
niko skrev:
Låter bara som om du glömt ange en referens till data.dll vid kompileringen?
csc /t:library /out:business [b]/r:<eventuell sökväg>\data.dll[/b] business.cs
Bingo! Jag trodde i min enfald att dll:en skulle hittas automatiskt om den låg i bin-mappen, men nu vet jag hur det funkar. Tack!
nikoMedlem sedan juni 20022 599 inlägg
Skarre skrev:
Jag trodde i min enfald att dll:en skulle hittas automatiskt om den låg i bin-mappen
Nej, faktum är att kompilatorn inte ens letar. Den enda assembly som inkluderas automatiskt är system.dll, alla andra måste anges explicit.