Situatie
Momenteel probeer ik de volgende structuur te realiseren:
- Een interfaces project waarin een IProductFactory en een IProduct zitten.
- Een factory project waarin ProductFactory en Product geïmplementeerd worden.
- Een test project waarin via remoting een ProductFactory wordt aangemaakt.
Zowel het factory project als het test project refereren aan het interfaces project. De factory heeft een methode welke een object van het type product maakt, maar die methode heeft als returntype IProduct. Het factory project is een class library welke gehost wordt in IIS en dus middels een web.config zijn remoting objecten beschikbaar stelt.
Probleem
Het verbinding maken via remoting werkt naar behoren. Er wordt succesvol een object aangemaakt en gecast naar IProductFactory en hiervan zijn attributen en methoden met 'normale' returntypes goed aan te roepen. Wanneer er echter een object aangemaakt dient te worden van het type IProduct krijg ik de melding "No assembly associated with XML key". Verderop in de melding wordt de key genoemd, welke begint met "http://schemas.microsoft.com/clr/nsassem/". Product is (uiteraard) uitgerust met het Serializable attribuut.
Wat heb je al geprobeerd?
TypeFilterLevel op "full" gezet: dit mocht helaas niet baten.
Handmatige (de)serialisatie implementeren, daar ben ik nog niet aan begonnen, alhoewel dat wel een aantal malen aangedragen wordt als mogelijke oplossing.
Google en GoT hebben het op verschillende plaatsen over deze foutmelding, maar niet specifiek met betrekking tot remoting waarin (een interface van) een factory wordt teruggegeven, welke op zijn beurt weer een create-methode heeft met een interface als returntype. Bij Microsoft (MSDN) heb ik dit specifieke geval ook niet kunnen terugvinden.
Extra info
Wat is de vraag?
Heeft iemand ervaring met dergelijke constructies? Weet iemand of ik misschien iets probeer wat niet kan of niet mag? En waarom dan niet? Of misschien zijn er andere constructies te bedenken die aan de client zijde een instantie van een server-object creëren?
Momenteel probeer ik de volgende structuur te realiseren:
- Een interfaces project waarin een IProductFactory en een IProduct zitten.
- Een factory project waarin ProductFactory en Product geïmplementeerd worden.
- Een test project waarin via remoting een ProductFactory wordt aangemaakt.
Zowel het factory project als het test project refereren aan het interfaces project. De factory heeft een methode welke een object van het type product maakt, maar die methode heeft als returntype IProduct. Het factory project is een class library welke gehost wordt in IIS en dus middels een web.config zijn remoting objecten beschikbaar stelt.
Probleem
Het verbinding maken via remoting werkt naar behoren. Er wordt succesvol een object aangemaakt en gecast naar IProductFactory en hiervan zijn attributen en methoden met 'normale' returntypes goed aan te roepen. Wanneer er echter een object aangemaakt dient te worden van het type IProduct krijg ik de melding "No assembly associated with XML key". Verderop in de melding wordt de key genoemd, welke begint met "http://schemas.microsoft.com/clr/nsassem/". Product is (uiteraard) uitgerust met het Serializable attribuut.
Wat heb je al geprobeerd?
TypeFilterLevel op "full" gezet: dit mocht helaas niet baten.
Handmatige (de)serialisatie implementeren, daar ben ik nog niet aan begonnen, alhoewel dat wel een aantal malen aangedragen wordt als mogelijke oplossing.
Google en GoT hebben het op verschillende plaatsen over deze foutmelding, maar niet specifiek met betrekking tot remoting waarin (een interface van) een factory wordt teruggegeven, welke op zijn beurt weer een create-methode heeft met een interface als returntype. Bij Microsoft (MSDN) heb ik dit specifieke geval ook niet kunnen terugvinden.
Extra info
C#:
Het gaat dus fout op regel 5 ...1
2
3
4
5
| IProduct iProduct; IProductFactory iProductFactory; iProductFactory = (IProductFactory)Activator.GetObject(typeof(IProductFactory), URL); iProduct = iProductFactory.CreateProduct(); |
Wat is de vraag?
Heeft iemand ervaring met dergelijke constructies? Weet iemand of ik misschien iets probeer wat niet kan of niet mag? En waarom dan niet? Of misschien zijn er andere constructies te bedenken die aan de client zijde een instantie van een server-object creëren?