2016-06-09 1 views
1

Cette question est assez simple portée, cela se résume à la configuration suivante:Accès champ interne de classe imbriquée de différents AppDomain

public class B : MarshalByRefObject { 
    public A a; 
    public class A : MarshalByRefObject { 
     internal int c; 
     public int d; 
    } 
} 

où j'ai une instance de B dans un AppDomain avec une référence à A dans un autre domaine. Cependant, je ne peux pas référencer c de B en appelant B.a.c; si je le fais, je reçois une exception remoting "Remoting ne peut pas trouver le champ c sur le type A". Je peux accéder à d en appelant B.a.d, cependant. Y at-il un moyen d'obtenir c sans recourir à la réflexion ou est-ce simplement le résultat de l'utilisation de AppDomains? Assez drôle, quand j'exécute le code en Mono 4.2.3, je n'obtiens aucune exception. Ce n'est que sur Windows que j'ai des problèmes, probablement dus à CAS.

Répondre

1

De MSDN:

types internes ou ne sont accessibles que dans les fichiers dans le même ensemble

Depuis Remoting implique la création d'une référence de votre client à l'ensemble contenant les objets distants, internes les membres ne seront pas visibles dans votre bibliothèque de classes client. Vous n'allez pas avoir accès aux membres internes sans avoir recours à la réflexion ou à une combinaison de dynamique et de réflexion.

+0

Figuré autant, merci. Terminé refactoring le code afin que cette situation a été évitée –