Avatar billede runeklausen2 Nybegynder
09. november 2005 - 00:02 Der er 9 kommentarer og
1 løsning

Kan ikke bruge samme objekt fra fil i 2 projekter?

Jeg har lavet et project, hvor jeg opretter en fil.

I mit andet projekt vil jeg så gerne indlæse filen, men den siger at objecterne ikke kan type castes.

Objeckt type ligger i begge projeket, hvor det kun er namespace som ikke er ens, af gode grunde...

Kan det virklig passe at de skal være ens?
Avatar billede runeklausen2 Nybegynder
09. november 2005 - 00:16 #1
Her er noget af det kode jeg bruger:

Til at gemme:

            SaveFileDialog saveLicens = new SaveFileDialog();
            saveLicens.Filter = "PRM licens|*.prm";
            saveLicens.Title = "Gem PRM licens fil";
            if (saveLicens.ShowDialog() == System.Windows.Forms.DialogResult.OK && saveLicens.FileName.Length > 0)
            {
                IFormatter formatter = new BinaryFormatter();
                Stream stream = new FileStream(saveLicens.FileName, FileMode.Create, FileAccess.Write, FileShare.None);
                formatter.Serialize(stream, PRMLicens);
                stream.Close();
            }

Her er det jeg bruger til at åbne filen med, fra et andet projekt:

        public Licens OpenLicens(String location)
        {
            Stream stream = File.Open(location, FileMode.Open, FileAccess.Read, FileShare.Read);
            IFormatter formatter = new BinaryFormatter();
            Licens obj = (Licens)formatter.Deserialize(stream);
            stream.Close();
            return obj;
        }

Licens.cs er i begge projekter ens.
Avatar billede arne_v Ekspert
09. november 2005 - 00:57 #2
ja

type cast checker ikke om koden er identisk men om det er præcis samme klasse

lav 3 projekter:

1 projekt med de fælles klasse som buildes til en DLL

2 projekter som bruger den DLL og som buildes til hver sin EXE
Avatar billede runeklausen2 Nybegynder
09. november 2005 - 03:18 #3
using System.Runtime.Serialization;
using System.Reflection;
...

o = Assembly.Load("Licens").CreateInstance("PRMLicens");
o.GetType().InvokeMember("setLicens(username.Text, company.Text, dato.Text)", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, o, null);

Er det sådan man bruger en DLL ?
Den laver en null pointer, jeg forstår det ikke helt
Men jeg har lavet en dll fil og lagt den sammen med min exe fil
Avatar billede arne_v Ekspert
09. november 2005 - 10:16 #4
Kun hvis du vil loade den dynamisk.

Du kan også bare tilføje en reference til dit EXE projekt og så bruge klasserne
helt normalt !
Avatar billede runeklausen2 Nybegynder
09. november 2005 - 11:55 #5
Hvordan? i dll filen eller bare i mine 2 andre projekter?
Avatar billede arne_v Ekspert
09. november 2005 - 12:09 #6
i dine 2 andre projekter
Avatar billede runeklausen2 Nybegynder
09. november 2005 - 12:16 #7
ok, tænkte jeg nok :)
Hvordan gør man så det rent kode messigt?

Jeg har aldrig rodet med dll-filer før, som du nok kan forstå
Avatar billede arne_v Ekspert
09. november 2005 - 12:18 #8
du tilføjer en reference til DLL'en

du importerer namespacet

og så bruger du bare klasserne helt normalt
Avatar billede runeklausen2 Nybegynder
14. november 2005 - 10:29 #9
svar?
Avatar billede arne_v Ekspert
14. november 2005 - 14:26 #10
kommer her
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