Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Lares

1x Contest-Sieger

  • »Lares« ist der Autor dieses Themas
  • Private Nachricht senden

21

29.06.2011, 15:30

Hab versucht es mit diesen typeofs zu läsen aber klappt auch nicht, ist immer noch der gleiche Fehler :|

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

22

29.06.2011, 21:16

Was wird denn bei Console.Write(typeof(Car).FullName) ausgegeben?

Lares

1x Contest-Sieger

  • »Lares« ist der Autor dieses Themas
  • Private Nachricht senden

23

30.06.2011, 13:26

Kommt das gleiche: Scripts.CarScripts.Car
Ich hab das Projekt mal hochgeladen, vllt ist ja eine vs Einstellung nicht richtig oder so:
http://dl.dropbox.com/u/5844076/ConsoleApplication1.zip

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

24

30.06.2011, 14:06

Durch debuggen findet man heraus, dass das problem ist, dass es zwei Klassen mit demselben Fullname gibt: einmal die aus deiner generierten Assembly und in deiner konsolenanwendung. Der CodeProvider kennt beide Typen und soll nun auf den Typ Car casten - aber er kann es nicht eindeutig auflösen:

Quellcode

1
(assembly.CreateInstance("Scripts.CarScripts.Car") as Car)The type 'Scripts.CarScripts.Car' exists in both 'ConsoleApplication1.exe' and 'test.dll'



daher liefert er null. du kannst zum beispiel mit reflection arbeiten:


Quellcode

1
Assembly assembly = compilerResults.CompiledAssembly;object car = assembly.CreateInstance("Scripts.CarScripts.Car");string s = car.GetType().GetMethod("Update").Invoke(car, null) as string;Console.Write(s);


ansonsten sollte es auch über ein interface gehen, das ist aber komplizierter!

Lares

1x Contest-Sieger

  • »Lares« ist der Autor dieses Themas
  • Private Nachricht senden

25

30.06.2011, 15:18

Ja super es klappt endlich, danke^^
Mit der Reflectionslösung bin ich erstmal voll zufrieden. Eine Lösung mit interface kommt dann vllt, wenn ich ein richtiges Programm mache.
Vielen Dank nochmal :D

Werbeanzeige