Avatar billede tjalle Nybegynder
25. september 2002 - 10:47 Der er 7 kommentarer og
1 løsning

Instanser af en klasse via et interface...

Kan du virkelig ikke lade sig gøre at sige:

interface person
...
end interface

class ansat
  inherits person
...
end class


dim s as String = "ansat"
dim p as person = new Type(s)  // laver et instans af ansat via person

så det kun er kaldet til klassen der er variabelt ?

Alt det andet fis jeg finder skal have data fra en assembly, og det er vel ikke nødvendigt !!

Tj.
Avatar billede kichian Nybegynder
25. september 2002 - 13:53 #1
Assembly abDenne = Assembly.GetExecutingAssembly();
Type enType = abDenne.GetType("ansat");
Object objektet = Activator.CreateInstance(enType);
person psPerson = objectet as person;
Avatar billede kichian Nybegynder
25. september 2002 - 13:54 #2
Se iøvrigt kommentar andetsteds.
Avatar billede kichian Nybegynder
25. september 2002 - 13:59 #3
Du skal iøvrigt være opmærksom på at Type er information om en klasse. Den har intet med instanser af klaser at gøre.
Avatar billede tjalle Nybegynder
07. oktober 2002 - 12:27 #4
Jeg kan ikke få det til at virke..
kan du ikke lave et simpelt eksempel til mig ?

Tj.
Avatar billede kichian Nybegynder
09. oktober 2002 - 00:39 #5
Hvem/hvad/hvor fejler? Det virker hos mig.
Avatar billede tjalle Nybegynder
14. oktober 2002 - 12:09 #6
det er simplethen fordi det ikke skal være så svært!

Jeg har en 2 klasser der henholdsvis definerer hvordan mine data gemmes. Den ene gemmer i en txt-fil. en anden i database. Interfacet specificerer hvilke metoder der skal være tilgængelige for den opgave : "at gemme data".

På lokationer hvor databasen er ikke er tilgængelig skal der gemmes i txt-fil og senere ligges i databasen.

Nu har du mit senarie.

Programmet skal så dynamisk afgøre om der er adgang til databasen,dette skal ikke gøres i vb, men det skal styres af en ini-fil som har en linie der siger dbAvalible=yes; (eller no). Når dette er læst af programmet skal den instasiere et lagringsobjekt som via et interface har alle de metoder der skal bruges.

For at instasiere dette lagring-objekt ska programmet vide navnet på den klasse den skal bruge. For at gøre det så dynamisk som muligt skal navnet på denne klasse læses fra en fil og derefter skal den instasieres:

dim lagringsObjekt as "INTERFACE" = new "KLASSENAVN"

hvor "KLASSENAVN" er det jeg har læst fra fil..!!

I Java, som jeg kender godt, gøres dette med "CreateInstanseOf()"

Tj.
Avatar billede kichian Nybegynder
15. oktober 2002 - 13:38 #7
Og oversættelsen bliver vel

Assembly abDenne = Assembly.GetExecutingAssembly();
Type enType = abDenne.GetType("DbSkriver");
Object objektet = Activator.CreateInstance(enType);
ISkriver Skriveren = objectet as ISkriver;
Avatar billede tjalle Nybegynder
16. oktober 2002 - 17:52 #8
som du nok efterhånden har regnet ud arbejder funkylonnie og jeg på samme projekt! har lige haft ham i telefonen, og han påstår han har løst det!!!

Så her er point!

Tak!
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
Kurser inden for grundlæggende programmering

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