C # - Маршалл по значению проблемы! - PullRequest
1 голос
/ 23 декабря 2010

Вот в чем дело, у меня проблема с созданием нового объекта с использованием удаленного механизма «маршал по значению».

Вот мой класс:

  [Serializable]
    internal class Empleado_MBV
    {
        public Empleado_MBV()
        {
            Id = 123456789;
            Nombres = "NotEntry";
            Apellidos = "NotEntry";
            FechaNacimiento = DateTime.MinValue;
            Direccion = "NotEntry";
            Metapreferencias = "NotEntry";
        }

        private List<Multas> _multas;

        internal List<Multas> Multas
        {
            get { return _multas; }
            set { _multas = value; }
        }

        private int _id;

        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }
        private string _nombres;

        public string Nombres
        {
            get { return _nombres; }
            set { _nombres = value; }
        }
        private string _apellidos;

        public string Apellidos
        {
            get { return _apellidos; }
            set { _apellidos = value; }
        }
        private DateTime _FecNac;

        public DateTime FechaNacimiento
        {
            get { return _FecNac; }
            set { _FecNac = value; }
        }
        private string _direccion;

        public string Direccion
        {
            get { return _direccion; }
            set { _direccion = value; }
        }
        private string _metapreferencias;

        public string Metapreferencias
        {
            get { return _metapreferencias; }
            set { _metapreferencias = value; }
        }

        public string _AppDomainHost
        {
            get { return AppDomain.CurrentDomain.FriendlyName.ToString(); }
        }
    }

Но когда я пытаюсьчтобы создать объект в другом «домене приложения», свойство «_AppDomainHost» в «Empleado» не отображает созданный мной «домен приложения», а показывает «доменное имя» по умолчанию.Некоторые идеи?

AppDomain ad1 = AppDomain.CreateDomain("NewAppDomain");
        //Crear new object in my new AD.
        Empleado_MBV mbv_emp =      (Empleado_MBV)ad1.CreateInstanceFromAndUnwrap("DEMO_MBV_MBR.exe", "DEMO_MBV_MBR.Empleado_MBV");

        Console.WriteLine(AppDomain.CurrentDomain.FriendlyName.ToString());
        Console.WriteLine("MBV : {0}",mbv_emp._AppDomainHost.ToString());

        Console.ReadLine();

Результат:

DEMO_MBV_MBR.vshost.exe

МБВ: DEMO_MBV_MBR.vshost.exe

Результат, который я хочу:

DEMO_MBV_MBR.vshost.exe

MBV: NewAppDomain

1 Ответ

2 голосов
/ 23 декабря 2010

Вам нужно хранить AppDomain в конструкторе Empleado_MBV.

То, что вы делаете сейчас, - это отображение текущего AppDomain с использованием статического свойства Current. Он вернет AppDomain, где выполняется текущий код.

Пример:

private string _appDomainHost;
public string _AppDomainHost
{
    get { return _appDomainHost; }
}

и в конструкторе:

_appDomainHost = AppDomain.CurrentDomain.FriendlyName.ToString();
...