OVH Cloud OVH Cloud

AppDomain problème de conversion

8 réponses
Avatar
YannR
Bonjours,

J'utilise un nouveau AppDomain pour pouvoir décharger une assembly plus tard.
Et j'utilise le code suivant :
-----------------------------------------------------------------------------------
Dim dom As AppDomain
Dim ads As New AppDomainSetup

ads.ApplicationBase = chemin
dom = AppDomain.CreateDomain("domaine", Nothing, ads)

'chargement de la class NomClass
Dim obj As RemoteLoad.NomClass

obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
"RemoteLoad.NomClass"), RemoteLoad.NomClass)
--------------------------------------------------------------------------------------
donc le CreateDomain me renvoie un
system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est 'normal' .
Par contre ce qui est bizarre c'est que aprés avoir créé l'instance et
utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un marshalobject,
qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet est l'instace
de cette class) mais là ça me renvoie une exception de type cast : "Cast
invalide". Pourtant dans plusieurs exemples VB.NET et C# que j'ai trouvé le
cast fonctionne.
Si quelqu'un peut trouver une solution pour que je puisse convertir cet
objet récalcitrant ou une autre solution, ça m'aiderait beaucoup.
Merci d'avance.

Voici les exemples pour ceux que ça interresse:
VB.NET
http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
C#
http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang=22
C#
http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero=13
--
Y.R

8 réponses

Avatar
Eric Vernié [MS]
Bonjour Yann,

Est-ce que ton objet hérite de MarshalByRefObject ?

A+

Eric Vernié

Microsoft France

"YannR" a écrit dans le message de news:

Bonjours,

J'utilise un nouveau AppDomain pour pouvoir décharger une assembly plus
tard.
Et j'utilise le code suivant :
-----------------------------------------------------------------------------------
Dim dom As AppDomain
Dim ads As New AppDomainSetup

ads.ApplicationBase = chemin
dom = AppDomain.CreateDomain("domaine", Nothing, ads)

'chargement de la class NomClass
Dim obj As RemoteLoad.NomClass

obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
"RemoteLoad.NomClass"), RemoteLoad.NomClass)
--------------------------------------------------------------------------------------
donc le CreateDomain me renvoie un
system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est 'normal' .
Par contre ce qui est bizarre c'est que aprés avoir créé l'instance et
utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un
marshalobject,
qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet est
l'instace
de cette class) mais là ça me renvoie une exception de type cast : "Cast
invalide". Pourtant dans plusieurs exemples VB.NET et C# que j'ai trouvé
le
cast fonctionne.
Si quelqu'un peut trouver une solution pour que je puisse convertir cet
objet récalcitrant ou une autre solution, ça m'aiderait beaucoup.
Merci d'avance.

Voici les exemples pour ceux que ça interresse:
VB.NET
http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
C#
http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang"
C#
http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero
--
Y.R


Avatar
YannR
salut,

oui oui ma classe hérite de MarshalByRefObject. Par contre g tester ce code
avec une
assembly de microsoft et ça fonctionne, c'est peut être un problème avec
l'assembly.
Enfin, je sais pas trop, voici toujours un résumé du code de l'assembly:

Public Interface IRemoteInterface
Function invoke(ByVal lcMethod As String, ByVal Parameters() As Object)
End Interface


Public Class RemoteLoader
Inherits MarshalByRefObject

Private Const bfi As BindingFlags = .....
Public Function Create(ByVal assemblyFile As String, ByVal typeName As
String, ByVal constructArgs As Object()) As IRemoteInterface
Return ......
End Function

End Class

Merci de ton intérêt :)

Yann.R

"Eric Vernié [MS]" wrote:

Bonjour Yann,

Est-ce que ton objet hérite de MarshalByRefObject ?

A+

Eric Vernié

Microsoft France

"YannR" a écrit dans le message de news:

> Bonjours,
>
> J'utilise un nouveau AppDomain pour pouvoir décharger une assembly plus
> tard.
> Et j'utilise le code suivant :
> -----------------------------------------------------------------------------------
> Dim dom As AppDomain
> Dim ads As New AppDomainSetup
>
> ads.ApplicationBase = chemin
> dom = AppDomain.CreateDomain("domaine", Nothing, ads)
>
> 'chargement de la class NomClass
> Dim obj As RemoteLoad.NomClass
>
> obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
> "RemoteLoad.NomClass"), RemoteLoad.NomClass)
> --------------------------------------------------------------------------------------
> donc le CreateDomain me renvoie un
> system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est 'normal' .
> Par contre ce qui est bizarre c'est que aprés avoir créé l'instance et
> utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un
> marshalobject,
> qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet est
> l'instace
> de cette class) mais là ça me renvoie une exception de type cast : "Cast
> invalide". Pourtant dans plusieurs exemples VB.NET et C# que j'ai trouvé
> le
> cast fonctionne.
> Si quelqu'un peut trouver une solution pour que je puisse convertir cet
> objet récalcitrant ou une autre solution, ça m'aiderait beaucoup.
> Merci d'avance.
>
> Voici les exemples pour ceux que ça interresse:
> VB.NET
> http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
> C#
> http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang"
> C#
> http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero
> --
> Y.R





Avatar
Eric Vernié [MS]
Yann,

J'ai cherché un peu avec un exemple que j'ai et qui fonctionne correctement.
par acquis de conscience, as tu mis Option Strict On pour vérifier si la
compilation ce passe correctement.
(Logiquement non, car dans la déclaration de la méthode dans ton Interface
si tu n'as pas fait d'erreur de saisie dans ton post, il manque le parametre
de retour de la méthode)

Peux tu vérifier ?

A+

Eric Vernié
Microsoft france

"YannR" a écrit dans le message de news:

salut,

oui oui ma classe hérite de MarshalByRefObject. Par contre g tester ce
code
avec une
assembly de microsoft et ça fonctionne, c'est peut être un problème avec
l'assembly.
Enfin, je sais pas trop, voici toujours un résumé du code de l'assembly:

Public Interface IRemoteInterface
Function invoke(ByVal lcMethod As String, ByVal Parameters() As Object)
End Interface


Public Class RemoteLoader
Inherits MarshalByRefObject

Private Const bfi As BindingFlags = .....
Public Function Create(ByVal assemblyFile As String, ByVal typeName As
String, ByVal constructArgs As Object()) As IRemoteInterface
Return ......
End Function

End Class

Merci de ton intérêt :)

Yann.R

"Eric Vernié [MS]" wrote:

Bonjour Yann,

Est-ce que ton objet hérite de MarshalByRefObject ?

A+

Eric Vernié

Microsoft France

"YannR" a écrit dans le message de
news:

> Bonjours,
>
> J'utilise un nouveau AppDomain pour pouvoir décharger une assembly plus
> tard.
> Et j'utilise le code suivant :
> -----------------------------------------------------------------------------------
> Dim dom As AppDomain
> Dim ads As New AppDomainSetup
>
> ads.ApplicationBase = chemin
> dom = AppDomain.CreateDomain("domaine", Nothing, ads)
>
> 'chargement de la class NomClass
> Dim obj As RemoteLoad.NomClass
>
> obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
> "RemoteLoad.NomClass"), RemoteLoad.NomClass)
> --------------------------------------------------------------------------------------
> donc le CreateDomain me renvoie un
> system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est 'normal'
> .
> Par contre ce qui est bizarre c'est que aprés avoir créé l'instance et
> utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un
> marshalobject,
> qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet est
> l'instace
> de cette class) mais là ça me renvoie une exception de type cast :
> "Cast
> invalide". Pourtant dans plusieurs exemples VB.NET et C# que j'ai
> trouvé
> le
> cast fonctionne.
> Si quelqu'un peut trouver une solution pour que je puisse convertir cet
> objet récalcitrant ou une autre solution, ça m'aiderait beaucoup.
> Merci d'avance.
>
> Voici les exemples pour ceux que ça interresse:
> VB.NET
> http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
> C#
> http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang"
> C#
> http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero
> --
> Y.R







Avatar
YannR
Bonjour,

Suivant votre conseil, j'ai mis 'option strict On' et j'ai corrigé l'erreur
de signature de la fonction. Mais ça fonctionne toujours pas :'( .
Sinon, voici ce que retourne ce code:
dom.CreateInstanceAndUnwrap"RemoteLoad",
"RemoteLoad.RemoteLoader").gettype.fullname
Renvoie: "System.MarshalByRefObject" String

Je sais pas si cela peut être utile mais au cas où.
Sinon, j'ai eu un problème de ComInterop à l'utilisation de cette librairie,
donc
lorsque je l'ai recompilée j'ai coché l'option 'inscrire pour ComInterop'.
Et je pouvais
l'utilisée sans erreur.

Je me demande bien ou petêtre cette erreur Grrr.
Encore merci de votre interêt! :)

Yann.R

"Eric Vernié [MS]" wrote:

Yann,

J'ai cherché un peu avec un exemple que j'ai et qui fonctionne correctement.
par acquis de conscience, as tu mis Option Strict On pour vérifier si la
compilation ce passe correctement.
(Logiquement non, car dans la déclaration de la méthode dans ton Interface
si tu n'as pas fait d'erreur de saisie dans ton post, il manque le parametre
de retour de la méthode)

Peux tu vérifier ?

A+

Eric Vernié
Microsoft france

"YannR" a écrit dans le message de news:

> salut,
>
> oui oui ma classe hérite de MarshalByRefObject. Par contre g tester ce
> code
> avec une
> assembly de microsoft et ça fonctionne, c'est peut être un problème avec
> l'assembly.
> Enfin, je sais pas trop, voici toujours un résumé du code de l'assembly:
>
> Public Interface IRemoteInterface
> Function invoke(ByVal lcMethod As String, ByVal Parameters() As Object)
> End Interface
>
>
> Public Class RemoteLoader
> Inherits MarshalByRefObject
>
> Private Const bfi As BindingFlags = .....
> Public Function Create(ByVal assemblyFile As String, ByVal typeName As
> String, ByVal constructArgs As Object()) As IRemoteInterface
> Return ......
> End Function
>
> End Class
>
> Merci de ton intérêt :)
>
> Yann.R
>
> "Eric Vernié [MS]" wrote:
>
>> Bonjour Yann,
>>
>> Est-ce que ton objet hérite de MarshalByRefObject ?
>>
>> A+
>>
>> Eric Vernié
>>
>> Microsoft France
>>
>> "YannR" a écrit dans le message de
>> news:
>>
>> > Bonjours,
>> >
>> > J'utilise un nouveau AppDomain pour pouvoir décharger une assembly plus
>> > tard.
>> > Et j'utilise le code suivant :
>> > -----------------------------------------------------------------------------------
>> > Dim dom As AppDomain
>> > Dim ads As New AppDomainSetup
>> >
>> > ads.ApplicationBase = chemin
>> > dom = AppDomain.CreateDomain("domaine", Nothing, ads)
>> >
>> > 'chargement de la class NomClass
>> > Dim obj As RemoteLoad.NomClass
>> >
>> > obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
>> > "RemoteLoad.NomClass"), RemoteLoad.NomClass)
>> > --------------------------------------------------------------------------------------
>> > donc le CreateDomain me renvoie un
>> > system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est 'normal'
>> > .
>> > Par contre ce qui est bizarre c'est que aprés avoir créé l'instance et
>> > utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un
>> > marshalobject,
>> > qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet est
>> > l'instace
>> > de cette class) mais là ça me renvoie une exception de type cast :
>> > "Cast
>> > invalide". Pourtant dans plusieurs exemples VB.NET et C# que j'ai
>> > trouvé
>> > le
>> > cast fonctionne.
>> > Si quelqu'un peut trouver une solution pour que je puisse convertir cet
>> > objet récalcitrant ou une autre solution, ça m'aiderait beaucoup.
>> > Merci d'avance.
>> >
>> > Voici les exemples pour ceux que ça interresse:
>> > VB.NET
>> > http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
>> > C#
>> > http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang"
>> > C#
>> > http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero
>> > --
>> > Y.R
>>
>>
>>





Avatar
Eric Vernié [MS]
Bonjour Yann,

As tu moyen de me faire parvenir un exemple reproduisant le problème ?

Merci

A+

Eric Vernié
Microsoft France

"YannR" a écrit dans le message de news:

Bonjour,

Suivant votre conseil, j'ai mis 'option strict On' et j'ai corrigé
l'erreur
de signature de la fonction. Mais ça fonctionne toujours pas :'( .
Sinon, voici ce que retourne ce code:
dom.CreateInstanceAndUnwrap"RemoteLoad",
"RemoteLoad.RemoteLoader").gettype.fullname
Renvoie: "System.MarshalByRefObject" String

Je sais pas si cela peut être utile mais au cas où.
Sinon, j'ai eu un problème de ComInterop à l'utilisation de cette
librairie,
donc
lorsque je l'ai recompilée j'ai coché l'option 'inscrire pour ComInterop'.
Et je pouvais
l'utilisée sans erreur.

Je me demande bien ou petêtre cette erreur Grrr.
Encore merci de votre interêt! :)

Yann.R

"Eric Vernié [MS]" wrote:

Yann,

J'ai cherché un peu avec un exemple que j'ai et qui fonctionne
correctement.
par acquis de conscience, as tu mis Option Strict On pour vérifier si la
compilation ce passe correctement.
(Logiquement non, car dans la déclaration de la méthode dans ton
Interface
si tu n'as pas fait d'erreur de saisie dans ton post, il manque le
parametre
de retour de la méthode)

Peux tu vérifier ?

A+

Eric Vernié
Microsoft france

"YannR" a écrit dans le message de
news:

> salut,
>
> oui oui ma classe hérite de MarshalByRefObject. Par contre g tester ce
> code
> avec une
> assembly de microsoft et ça fonctionne, c'est peut être un problème
> avec
> l'assembly.
> Enfin, je sais pas trop, voici toujours un résumé du code de
> l'assembly:
>
> Public Interface IRemoteInterface
> Function invoke(ByVal lcMethod As String, ByVal Parameters() As
> Object)
> End Interface
>
>
> Public Class RemoteLoader
> Inherits MarshalByRefObject
>
> Private Const bfi As BindingFlags = .....
> Public Function Create(ByVal assemblyFile As String, ByVal typeName
> As
> String, ByVal constructArgs As Object()) As IRemoteInterface
> Return ......
> End Function
>
> End Class
>
> Merci de ton intérêt :)
>
> Yann.R
>
> "Eric Vernié [MS]" wrote:
>
>> Bonjour Yann,
>>
>> Est-ce que ton objet hérite de MarshalByRefObject ?
>>
>> A+
>>
>> Eric Vernié
>>
>> Microsoft France
>>
>> "YannR" a écrit dans le message de
>> news:
>>
>> > Bonjours,
>> >
>> > J'utilise un nouveau AppDomain pour pouvoir décharger une assembly
>> > plus
>> > tard.
>> > Et j'utilise le code suivant :
>> > -----------------------------------------------------------------------------------
>> > Dim dom As AppDomain
>> > Dim ads As New AppDomainSetup
>> >
>> > ads.ApplicationBase = chemin
>> > dom = AppDomain.CreateDomain("domaine", Nothing, ads)
>> >
>> > 'chargement de la class NomClass
>> > Dim obj As RemoteLoad.NomClass
>> >
>> > obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
>> > "RemoteLoad.NomClass"), RemoteLoad.NomClass)
>> > --------------------------------------------------------------------------------------
>> > donc le CreateDomain me renvoie un
>> > system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est
>> > 'normal'
>> > .
>> > Par contre ce qui est bizarre c'est que aprés avoir créé l'instance
>> > et
>> > utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un
>> > marshalobject,
>> > qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet est
>> > l'instace
>> > de cette class) mais là ça me renvoie une exception de type cast :
>> > "Cast
>> > invalide". Pourtant dans plusieurs exemples VB.NET et C# que j'ai
>> > trouvé
>> > le
>> > cast fonctionne.
>> > Si quelqu'un peut trouver une solution pour que je puisse convertir
>> > cet
>> > objet récalcitrant ou une autre solution, ça m'aiderait beaucoup.
>> > Merci d'avance.
>> >
>> > Voici les exemples pour ceux que ça interresse:
>> > VB.NET
>> > http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
>> > C#
>> > http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang"
>> > C#
>> > http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero
>> > --
>> > Y.R
>>
>>
>>







Avatar
YannR
ok je tente de vous envoyer un mail :p

"Eric Vernié [MS]" wrote:

Bonjour Yann,

As tu moyen de me faire parvenir un exemple reproduisant le problème ?

Merci

A+

Eric Vernié
Microsoft France

"YannR" a écrit dans le message de news:

> Bonjour,
>
> Suivant votre conseil, j'ai mis 'option strict On' et j'ai corrigé
> l'erreur
> de signature de la fonction. Mais ça fonctionne toujours pas :'( .
> Sinon, voici ce que retourne ce code:
> dom.CreateInstanceAndUnwrap"RemoteLoad",
> "RemoteLoad.RemoteLoader").gettype.fullname
> Renvoie: "System.MarshalByRefObject" String
>
> Je sais pas si cela peut être utile mais au cas où.
> Sinon, j'ai eu un problème de ComInterop à l'utilisation de cette
> librairie,
> donc
> lorsque je l'ai recompilée j'ai coché l'option 'inscrire pour ComInterop'.
> Et je pouvais
> l'utilisée sans erreur.
>
> Je me demande bien ou petêtre cette erreur Grrr.
> Encore merci de votre interêt! :)
>
> Yann.R
>
> "Eric Vernié [MS]" wrote:
>
>> Yann,
>>
>> J'ai cherché un peu avec un exemple que j'ai et qui fonctionne
>> correctement.
>> par acquis de conscience, as tu mis Option Strict On pour vérifier si la
>> compilation ce passe correctement.
>> (Logiquement non, car dans la déclaration de la méthode dans ton
>> Interface
>> si tu n'as pas fait d'erreur de saisie dans ton post, il manque le
>> parametre
>> de retour de la méthode)
>>
>> Peux tu vérifier ?
>>
>> A+
>>
>> Eric Vernié
>> Microsoft france
>>
>> "YannR" a écrit dans le message de
>> news:
>>
>> > salut,
>> >
>> > oui oui ma classe hérite de MarshalByRefObject. Par contre g tester ce
>> > code
>> > avec une
>> > assembly de microsoft et ça fonctionne, c'est peut être un problème
>> > avec
>> > l'assembly.
>> > Enfin, je sais pas trop, voici toujours un résumé du code de
>> > l'assembly:
>> >
>> > Public Interface IRemoteInterface
>> > Function invoke(ByVal lcMethod As String, ByVal Parameters() As
>> > Object)
>> > End Interface
>> >
>> >
>> > Public Class RemoteLoader
>> > Inherits MarshalByRefObject
>> >
>> > Private Const bfi As BindingFlags = .....
>> > Public Function Create(ByVal assemblyFile As String, ByVal typeName
>> > As
>> > String, ByVal constructArgs As Object()) As IRemoteInterface
>> > Return ......
>> > End Function
>> >
>> > End Class
>> >
>> > Merci de ton intérêt :)
>> >
>> > Yann.R
>> >
>> > "Eric Vernié [MS]" wrote:
>> >
>> >> Bonjour Yann,
>> >>
>> >> Est-ce que ton objet hérite de MarshalByRefObject ?
>> >>
>> >> A+
>> >>
>> >> Eric Vernié
>> >>
>> >> Microsoft France
>> >>
>> >> "YannR" a écrit dans le message de
>> >> news:
>> >>
>> >> > Bonjours,
>> >> >
>> >> > J'utilise un nouveau AppDomain pour pouvoir décharger une assembly
>> >> > plus
>> >> > tard.
>> >> > Et j'utilise le code suivant :
>> >> > -----------------------------------------------------------------------------------
>> >> > Dim dom As AppDomain
>> >> > Dim ads As New AppDomainSetup
>> >> >
>> >> > ads.ApplicationBase = chemin
>> >> > dom = AppDomain.CreateDomain("domaine", Nothing, ads)
>> >> >
>> >> > 'chargement de la class NomClass
>> >> > Dim obj As RemoteLoad.NomClass
>> >> >
>> >> > obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
>> >> > "RemoteLoad.NomClass"), RemoteLoad.NomClass)
>> >> > --------------------------------------------------------------------------------------
>> >> > donc le CreateDomain me renvoie un
>> >> > system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est
>> >> > 'normal'
>> >> > .
>> >> > Par contre ce qui est bizarre c'est que aprés avoir créé l'instance
>> >> > et
>> >> > utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un
>> >> > marshalobject,
>> >> > qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet est
>> >> > l'instace
>> >> > de cette class) mais là ça me renvoie une exception de type cast :
>> >> > "Cast
>> >> > invalide". Pourtant dans plusieurs exemples VB.NET et C# que j'ai
>> >> > trouvé
>> >> > le
>> >> > cast fonctionne.
>> >> > Si quelqu'un peut trouver une solution pour que je puisse convertir
>> >> > cet
>> >> > objet récalcitrant ou une autre solution, ça m'aiderait beaucoup.
>> >> > Merci d'avance.
>> >> >
>> >> > Voici les exemples pour ceux que ça interresse:
>> >> > VB.NET
>> >> > http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
>> >> > C#
>> >> > http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang"
>> >> > C#
>> >> > http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero
>> >> > --
>> >> > Y.R
>> >>
>> >>
>> >>
>>
>>
>>





Avatar
Eric Vernié [MS]
Bonjour Yann,

Ma réponse dans le mail.

Eric Vernié
Microsoft

"YannR" a écrit dans le message de news:

ok je tente de vous envoyer un mail :p

"Eric Vernié [MS]" wrote:

Bonjour Yann,

As tu moyen de me faire parvenir un exemple reproduisant le problème ?

Merci

A+

Eric Vernié
Microsoft France

"YannR" a écrit dans le message de
news:

> Bonjour,
>
> Suivant votre conseil, j'ai mis 'option strict On' et j'ai corrigé
> l'erreur
> de signature de la fonction. Mais ça fonctionne toujours pas :'( .
> Sinon, voici ce que retourne ce code:
> dom.CreateInstanceAndUnwrap"RemoteLoad",
> "RemoteLoad.RemoteLoader").gettype.fullname
> Renvoie: "System.MarshalByRefObject" String
>
> Je sais pas si cela peut être utile mais au cas où.
> Sinon, j'ai eu un problème de ComInterop à l'utilisation de cette
> librairie,
> donc
> lorsque je l'ai recompilée j'ai coché l'option 'inscrire pour
> ComInterop'.
> Et je pouvais
> l'utilisée sans erreur.
>
> Je me demande bien ou petêtre cette erreur Grrr.
> Encore merci de votre interêt! :)
>
> Yann.R
>
> "Eric Vernié [MS]" wrote:
>
>> Yann,
>>
>> J'ai cherché un peu avec un exemple que j'ai et qui fonctionne
>> correctement.
>> par acquis de conscience, as tu mis Option Strict On pour vérifier si
>> la
>> compilation ce passe correctement.
>> (Logiquement non, car dans la déclaration de la méthode dans ton
>> Interface
>> si tu n'as pas fait d'erreur de saisie dans ton post, il manque le
>> parametre
>> de retour de la méthode)
>>
>> Peux tu vérifier ?
>>
>> A+
>>
>> Eric Vernié
>> Microsoft france
>>
>> "YannR" a écrit dans le message de
>> news:
>>
>> > salut,
>> >
>> > oui oui ma classe hérite de MarshalByRefObject. Par contre g tester
>> > ce
>> > code
>> > avec une
>> > assembly de microsoft et ça fonctionne, c'est peut être un problème
>> > avec
>> > l'assembly.
>> > Enfin, je sais pas trop, voici toujours un résumé du code de
>> > l'assembly:
>> >
>> > Public Interface IRemoteInterface
>> > Function invoke(ByVal lcMethod As String, ByVal Parameters() As
>> > Object)
>> > End Interface
>> >
>> >
>> > Public Class RemoteLoader
>> > Inherits MarshalByRefObject
>> >
>> > Private Const bfi As BindingFlags = .....
>> > Public Function Create(ByVal assemblyFile As String, ByVal
>> > typeName
>> > As
>> > String, ByVal constructArgs As Object()) As IRemoteInterface
>> > Return ......
>> > End Function
>> >
>> > End Class
>> >
>> > Merci de ton intérêt :)
>> >
>> > Yann.R
>> >
>> > "Eric Vernié [MS]" wrote:
>> >
>> >> Bonjour Yann,
>> >>
>> >> Est-ce que ton objet hérite de MarshalByRefObject ?
>> >>
>> >> A+
>> >>
>> >> Eric Vernié
>> >>
>> >> Microsoft France
>> >>
>> >> "YannR" a écrit dans le message
>> >> de
>> >> news:
>> >>
>> >> > Bonjours,
>> >> >
>> >> > J'utilise un nouveau AppDomain pour pouvoir décharger une
>> >> > assembly
>> >> > plus
>> >> > tard.
>> >> > Et j'utilise le code suivant :
>> >> > -----------------------------------------------------------------------------------
>> >> > Dim dom As AppDomain
>> >> > Dim ads As New AppDomainSetup
>> >> >
>> >> > ads.ApplicationBase = chemin
>> >> > dom = AppDomain.CreateDomain("domaine", Nothing, ads)
>> >> >
>> >> > 'chargement de la class NomClass
>> >> > Dim obj As RemoteLoad.NomClass
>> >> >
>> >> > obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
>> >> > "RemoteLoad.NomClass"), RemoteLoad.NomClass)
>> >> > --------------------------------------------------------------------------------------
>> >> > donc le CreateDomain me renvoie un
>> >> > system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est
>> >> > 'normal'
>> >> > .
>> >> > Par contre ce qui est bizarre c'est que aprés avoir créé
>> >> > l'instance
>> >> > et
>> >> > utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un
>> >> > marshalobject,
>> >> > qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet
>> >> > est
>> >> > l'instace
>> >> > de cette class) mais là ça me renvoie une exception de type cast
>> >> > :
>> >> > "Cast
>> >> > invalide". Pourtant dans plusieurs exemples VB.NET et C# que j'ai
>> >> > trouvé
>> >> > le
>> >> > cast fonctionne.
>> >> > Si quelqu'un peut trouver une solution pour que je puisse
>> >> > convertir
>> >> > cet
>> >> > objet récalcitrant ou une autre solution, ça m'aiderait beaucoup.
>> >> > Merci d'avance.
>> >> >
>> >> > Voici les exemples pour ceux que ça interresse:
>> >> > VB.NET
>> >> > http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
>> >> > C#
>> >> > http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang"
>> >> > C#
>> >> > http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero
>> >> > --
>> >> > Y.R
>> >>
>> >>
>> >>
>>
>>
>>







Avatar
Eric Vernié [MS]
Bonjour Yann
Réponse par mail
EV

"Eric Vernié [MS]" a écrit dans le message de
news:
Bonjour Yann,

Ma réponse dans le mail.

Eric Vernié
Microsoft

"YannR" a écrit dans le message de news:

ok je tente de vous envoyer un mail :p

"Eric Vernié [MS]" wrote:

Bonjour Yann,

As tu moyen de me faire parvenir un exemple reproduisant le problème ?

Merci

A+

Eric Vernié
Microsoft France

"YannR" a écrit dans le message de
news:

> Bonjour,
>
> Suivant votre conseil, j'ai mis 'option strict On' et j'ai corrigé
> l'erreur
> de signature de la fonction. Mais ça fonctionne toujours pas :'( .
> Sinon, voici ce que retourne ce code:
> dom.CreateInstanceAndUnwrap"RemoteLoad",
> "RemoteLoad.RemoteLoader").gettype.fullname
> Renvoie: "System.MarshalByRefObject" String
>
> Je sais pas si cela peut être utile mais au cas où.
> Sinon, j'ai eu un problème de ComInterop à l'utilisation de cette
> librairie,
> donc
> lorsque je l'ai recompilée j'ai coché l'option 'inscrire pour
> ComInterop'.
> Et je pouvais
> l'utilisée sans erreur.
>
> Je me demande bien ou petêtre cette erreur Grrr.
> Encore merci de votre interêt! :)
>
> Yann.R
>
> "Eric Vernié [MS]" wrote:
>
>> Yann,
>>
>> J'ai cherché un peu avec un exemple que j'ai et qui fonctionne
>> correctement.
>> par acquis de conscience, as tu mis Option Strict On pour vérifier si
>> la
>> compilation ce passe correctement.
>> (Logiquement non, car dans la déclaration de la méthode dans ton
>> Interface
>> si tu n'as pas fait d'erreur de saisie dans ton post, il manque le
>> parametre
>> de retour de la méthode)
>>
>> Peux tu vérifier ?
>>
>> A+
>>
>> Eric Vernié
>> Microsoft france
>>
>> "YannR" a écrit dans le message de
>> news:
>>
>> > salut,
>> >
>> > oui oui ma classe hérite de MarshalByRefObject. Par contre g tester
>> > ce
>> > code
>> > avec une
>> > assembly de microsoft et ça fonctionne, c'est peut être un problème
>> > avec
>> > l'assembly.
>> > Enfin, je sais pas trop, voici toujours un résumé du code de
>> > l'assembly:
>> >
>> > Public Interface IRemoteInterface
>> > Function invoke(ByVal lcMethod As String, ByVal Parameters() As
>> > Object)
>> > End Interface
>> >
>> >
>> > Public Class RemoteLoader
>> > Inherits MarshalByRefObject
>> >
>> > Private Const bfi As BindingFlags = .....
>> > Public Function Create(ByVal assemblyFile As String, ByVal
>> > typeName
>> > As
>> > String, ByVal constructArgs As Object()) As IRemoteInterface
>> > Return ......
>> > End Function
>> >
>> > End Class
>> >
>> > Merci de ton intérêt :)
>> >
>> > Yann.R
>> >
>> > "Eric Vernié [MS]" wrote:
>> >
>> >> Bonjour Yann,
>> >>
>> >> Est-ce que ton objet hérite de MarshalByRefObject ?
>> >>
>> >> A+
>> >>
>> >> Eric Vernié
>> >>
>> >> Microsoft France
>> >>
>> >> "YannR" a écrit dans le message
>> >> de
>> >> news:
>> >>
>> >> > Bonjours,
>> >> >
>> >> > J'utilise un nouveau AppDomain pour pouvoir décharger une
>> >> > assembly
>> >> > plus
>> >> > tard.
>> >> > Et j'utilise le code suivant :
>> >> > -----------------------------------------------------------------------------------
>> >> > Dim dom As AppDomain
>> >> > Dim ads As New AppDomainSetup
>> >> >
>> >> > ads.ApplicationBase = chemin
>> >> > dom = AppDomain.CreateDomain("domaine", Nothing, ads)
>> >> >
>> >> > 'chargement de la class NomClass
>> >> > Dim obj As RemoteLoad.NomClass
>> >> >
>> >> > obj = DirectCast(dom.CreateInstanceAndUnwrap("RemoteLoad",
>> >> > "RemoteLoad.NomClass"), RemoteLoad.NomClass)
>> >> > --------------------------------------------------------------------------------------
>> >> > donc le CreateDomain me renvoie un
>> >> > system.Runtime.Remoting.Proxies.__TransparentProxy ce qui est
>> >> > 'normal'
>> >> > .
>> >> > Par contre ce qui est bizarre c'est que aprés avoir créé
>> >> > l'instance
>> >> > et
>> >> > utilisé 'Unwrap' j'obtien le TransparentProxy pointant sur un
>> >> > marshalobject,
>> >> > qui devrai pouvoir se convertir en 'NomClass' (vu que cet objet
>> >> > est
>> >> > l'instace
>> >> > de cette class) mais là ça me renvoie une exception de type cast
>> >> > :
>> >> > "Cast
>> >> > invalide". Pourtant dans plusieurs exemples VB.NET et C# que
>> >> > j'ai
>> >> > trouvé
>> >> > le
>> >> > cast fonctionne.
>> >> > Si quelqu'un peut trouver une solution pour que je puisse
>> >> > convertir
>> >> > cet
>> >> > objet récalcitrant ou une autre solution, ça m'aiderait
>> >> > beaucoup.
>> >> > Merci d'avance.
>> >> >
>> >> > Voici les exemples pour ceux que ça interresse:
>> >> > VB.NET
>> >> > http://www.ftponline.com/vsm/2004_01/online/hottip/sabbadin/default_pf.aspx
>> >> > C#
>> >> > http://www.microsoft.com/france/msdn/technologies/outils/vcsharp/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20020930_appdomain-classes.html&xmlpath=/france/msdn/technologies/outils/vcsharp/vcs_inforef.xml&rang"
>> >> > C#
>> >> > http://www.programmationworld.com/site/Cours.asp?Action=cours&Numero
>> >> > --
>> >> > Y.R
>> >>
>> >>
>> >>
>>
>>
>>