System.TypeLoadException - i forbindelse med brug af ekstern dll
Hej eksperterJeg har problemer med at gøre brug af en klasse i en assembly, som jeg refererer til fra en klasse i en anden assembly.
Den klasse der refereres til, genererer jeg vha. af en aspect weaver (YIIHAW). Jeg håber I kan hjælpe mig til at finde ud af,
hvorvidt jeg gør noget forkert (det mest sandsynlige) eller om weaveren genererer en ugyldig assembly.
I et forsøg på at finde en kilde til problemet, har jeg betragtet den pågældende type 'TargetAssy.Course' vha. hhv. IL DASM og Reflector.
Begge disse værktøjer kan vise typen uden problemer. Se den specifikke dll under placeringen YIIHAW_question\YIHAWIntroductionTestEkspertenError\Nant\Assemblies i nedenfor nævnte test.
Jeg modtager nedenstående fejlmeddelese, når jeg forsøger at eksekvere programmet. WovenAssy er den assembly der refereres til (jf. ovennævnte forklaring):
Unhandled Exception: System.TypeLoadException: Method 'AddTo' in type 'TargetAssy.Course' from assembly 'WovenAssy, version=0.0.0.0, Culture=neutral,
PublicKeyToken=null' does not have an implementation.
at TestClass..ctor()
at TestClass.Main(String[] args)
Her en gennemgang af hvad jeg forsøger at opnå. Jeg har en type 'Course', som jeg 1) vil have til at implementere et interface 'From' (typestructure modification)
2) injeciere metodedefinitionen til metoden AddTo (construct introduction). Metod en AddTo er erklæret i interfacet 'From'.
Man kan læse om YIIHAW her: www.itu.dk/~sestoft/papers/yiihaw-usage-guide.pdf
Bemærk afsnit 8.2 og 8.3, som omhandler 'introduction' og 'typestructure modification'.
Jeg har lavet to eksempler, som kan hentes fra følgende adresse: http://www.megaupload.com/?d=GLD18B8U. Bemærk det to bat-filer placeret i roden af mappen 'YIIHAW_question' de sørger for at kalde nant buildfiles, som sørger for hhv. at compile, weave og i sidste ende eksekvere testprogrammet.
I det første eksempel 'YIHAWIntroductionTestEksperten' foretages der ikke typestructure modification, og der opstår ikke problemer. I det andet eksempel ikke noget problem. I det andet eksempel 'YIHAWIntroductionTestEkspertenError' angives det at klassen 'Course' skal implementere interfacet 'From'. Her opstår
problemet.
Her vises pointcut-filen (filen der specificerer hvilke ændringer weaveren skal foretage - se afsnit 8 i 'usage guide' for en beskrivelse) fra eksemplet der medfører fejl. Det er den fjerde linie der beskriver type modification:
insert field * instance double AdviceAssy.AdviceClass:fi into TargetAssy.Course;
insert method public instance void AdviceAssy.AdviceClass:AddTo() into TargetAssy.Course;
insert type AdviceAssy.From into TargetAssy;
modify TargetAssy.Course implement AdviceAssy.From;
Jeg findet det rimeligt at tildele /mange point/ til en evt. svarer, da det kræver lidt arbejde at sætte sig ind i problemet + de filer der linkes til.
På forhånd tak