06. december 2006 - 14:29Der er
6 kommentarer og 1 løsning
Design af program, "ambiguous reference between classes"
Hejsa. Jeg har et program bestående af en hovedklasse i ét namespace, som skal benytte én af to .dll-libraries som selvfølgelig er i hvert sit namespace. de to .dll-libraries' implementering er forskellig med de indeholder begge en klasse dllControl der styrer dem.
Ved opstart skal der oprettes to instanser af hovedklassen der hver skal indeholde en reference til sin dllControl i sin dll. Hovedklassens implementering skal dog være ens for de to instanser, så en instans af dllControl i hovedklassen kan referere til begge dll'er.
Hvordan fortæller man compileren at hovedklassens dllControl objekt skal referere det der bliver bestemt på compile-tidspunkt uden at få en "ambiguous reference between classes". Fejlen opstår selvfølgelig fordi at dllControl er implementeret i begge dll'er, men det er jo faktisk med vilje.
mit problem minder lidt om nedenstående kodesnit:
using x; using y;
namespace x { public class Test { } }
namespace y { public class Test { } }
public class a { public static void Main() { Test test = new Test(); // CS0104, is Test in x or y namespace? // try the following line instead // y.Test test = new y.Test(); } }
Jeg kan bare ikke sige y.Test for jeg ved jo netop ikke om det er x eller y jeg skal anvende. For yderligere at specificere problemet, er hovedklassen en "picturebox" der skal tegne figurer. figurerne er beskrevet i hver sit dll-library.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Nå jeg var vist lidt for hurtigt ude, tror du skal uddybe dit problem lidt. Men har du klasser med samme navn er de nød til at være i hver sit namespace. Vil du teste om en klasse hører til et namespace kan du jo skrive:
Din kode giver ingen mening. Hvordan skal compileren på nogen måde finde ud af, hvilken Test klasse, den skal instantiere ?
Jeg tror du er nødt til at forklare dig nærmere, og evt. poste noget mere kode.
Namespaces bruges udelukkende til at organisere typer i logiske og overskuelige områder, og for at undgå name clashing, som er det du oplever. Man kan ikke implementere "polymorfi via namespaces", som din postede koder måske minder en smule om ;-)
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.