Avatar billede simsen Mester
07. juli 2008 - 09:26 Der er 9 kommentarer og
1 løsning

Generelle ting om klasser

Hej,

Jeg har gjort mig nogle tanker de sidste dage, over hvordan tingene kan løses......

Mit scenarie: Mit firmar har fået en kontrakt, hvor vi skal bygge nogle klasse filer (cs filer), som skal kunne tilgås af et andet firma. De cs filer jeg laver, skal så buildes til én dll fil, som vi så sender videre.

Mit spørgsmål angående dette, hvordan gør jeg så, den kun builder én dll fil udfra de cs filer jeg har?

En anden ting, jeg ligger og roder med, er selve cs filerne. Indtil nu har jeg altid selv håndteret al kode og ikke haft andre involveret......

Nu er det sådan, at jeg jo vil have nogle cs filer, hvor jeg har nogle public metoder, som skal kunne tilgås udefra.....Dem har jeg ingen problemer med, det er jo det jeg plejer at gøre....MEN jeg vil så også have nogle metoder, som kun skal kunne tilgås indefra (det er udregninger mm.) - men hvis jeg bruger private, kan jeg jo kun bruge dem i den cs fil, hvor jeg har lavet den. Nu er det bare således at nogle af de beregninger skal jeg bruge i flere forskellige cs filer.......... så private dur ikke for mig - hvad kan jeg bruge, så de ikke kan bruges udefra - men kun intern i cs filerne?

Og så en sidste ting - nogen der kender til gode tutorials med versionsstyring af ovennævnte?

mvh
simsen :-)
Avatar billede aaberg Nybegynder
07. juli 2008 - 09:43 #1
spm 1.
Når du skal oprette dit projekt og skal vælge projekttype, så vælger du et klassebibliotek (Class library). I .NET bliver hvert projekt kompilleret til en dll fil. Så længe du har alle dine filer i samme projekt, bliver de kompilleret ned i samme dll fil.

spm 2.
Alle metoder/klasser/properties/fields markeret som internal kan ses av alle klasser i samme assembly (dll), men ikke av klasser fra andre assemblies.

spm3.
Jeg foreslår du ser på Visual Source Safe, som er et Source Control system fra Microsoft, som er rimeligt nemt at komme i gang med. Se følgende link.
http://msdn.microsoft.com/en-us/vs2005/aa718670.aspx

Og så en hurtig kommentar. Hvis du bruger private om en metode, kan denne bruges internt i klassen, men ikke internt i cs filen. En klasse kan godt spredes ud over flere filer, og du kan have flere klasser i en cs fil.
Avatar billede simsen Mester
07. juli 2008 - 09:58 #2
aaberg cc

Hejsa tak for dine svar. Lige et par tillægsspørgsmål......

til dit svar på spm3.... Vi bruger Team Foundation kan den bruges og i så fald hvordan? - Jeg tænker jo ikke på versionsstyring af selve cs filerne. Men en versionsstyring af de dll filer vi sender ud af huset?

Når jeg (jeg skal jo også teste skidtet jo..) knytter en dll fil til en web side, hvordan tilgår jeg så de public metoder i den dll fil fra web siden?

Og så mistede du mig fuldstændig med din kommentar..... Jeg forstår det med private - det vidste jeg godt (hvis jeg bare tænkte mig lidt om....) og det at jeg kan have flere klasser i en cs fil, har jeg også brugt men jeg anede ikke man kunne sprede en klasse udover flere filer?
07. juli 2008 - 10:17 #3
Hejsa.

Må jeg spørge hvorfor du ikke laver det som en eller flere webservices, så slipper du helt for at tænke på dll versionering (dll hell) og du slipper for at replikere dine dll filer ud til andre.

ASMX som er den nemmeste form for webservices i .NET burde lige være sagen. Du kan også kigge på WCF som ligner mere end platform end ASMX.
Avatar billede simsen Mester
07. juli 2008 - 10:20 #4
Hejsa daniel,

Fordi de VIL have det som dll filer...... så intet at gøre i den retning.....

mvh
simsen :-)
07. juli 2008 - 10:40 #5
Så kan jeg kun sige, at det er en dårlig løsning :)
Avatar billede aaberg Nybegynder
07. juli 2008 - 11:26 #6
Du kan godt bruge Team Foundation. Denne indeholder et glimrende versionstyringsystem, som du kan bruge til både at styre source filer (f.eks. cs filer) og dll filer. Se om du kan bruge nogle af tutorial videoerne fra denne side til noget:
http://teamsystemrocks.com/tutorials/

Fra din test webside tilgår du klasserne og deres metoder, som du tilgår alt muligt andet fra .NET frameworket. Du skal først oprette en reference til projektet. Når dette er gjort, er alle klasserne automatisk til rådighed fra din webside. Det nemmeste er nok at tilgå klasserne fra code-behind filerne. Jeg vil lige tilføje (I tilfælde du ikke allerede er klar over det), for at tilgå public metoder, skal klassen også være markeret som public.

hvis du markere en klasse med partial, kan du sprede den over flere klasser. F.eks.:

fil 1:
public partial class MyClass
{
  public int field1;
}

fil 2:
public partial class MyClass
{
  public string field2;
}

Dette bliver kompilleret til det samme som følgende:
public class MyClass
{
  public int field1;
  public string field2;
}

danielmellgaardfrost:
Det er ikke nødvendigvis en dårlig løsning at distribuere dll filer. Dette kan være af både sikkerhedsmæssige hensyn og performance.
Avatar billede simsen Mester
07. juli 2008 - 11:45 #7
aaberg cc

Du er bare en engel....Rigtig mange tak for dit svar. Du har forstået at svare mig, så jeg også har forstået det.

Husk at smide et svar, så du kan få dine velfortjente points

mvh
simsen :-)
Avatar billede aaberg Nybegynder
07. juli 2008 - 12:03 #8
Svar :-)

Held og lykke med programmeringen.

~aaberg
Avatar billede aaberg Nybegynder
07. juli 2008 - 12:06 #9
Lige en sidste kommentar. partial klasser var ikke en mulighed før .NET 2.0. Så hvis du f.eks. bruger .NET 1.1, kan du ikke dele klasser op i flere filer.
Avatar billede simsen Mester
07. juli 2008 - 12:34 #10
Tak - rart at vide - men bruger nu både 2.0 og 3.5, så ingen problemer der :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester