C# - Marshall by value 问题!
Posted
技术标签:
【中文标题】C# - Marshall by value 问题!【英文标题】:C# - Marshall by value problem! 【发布时间】:2010-12-23 07:13:22 【问题描述】:事情是这样的,我在使用远程机制“按值封送”创建新对象时遇到问题。
这是我的课:
[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();
但是当我尝试在另一个“appdomain”中创建对象时,“Empleado”的属性“_AppDomainHost”并没有显示我创建的“appdomain”,而是默认显示“appdomain”。有什么想法吗?
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
MBV : DEMO_MBV_MBR.vshost.exe
我想要的结果:
DEMO_MBV_MBR.vshost.exe
MBV : 新应用域
【问题讨论】:
【参考方案1】:您需要将AppDomain
存储在Empleado_MBV
的构造函数中。
您现在正在做的是使用其Current
静态属性显示当前AppDomain
。它将返回当前代码正在执行的AppDomain
。
示例:
private string _appDomainHost;
public string _AppDomainHost
get return _appDomainHost;
在构造函数中:
_appDomainHost = AppDomain.CurrentDomain.FriendlyName.ToString();
【讨论】:
以上是关于C# - Marshall by value 问题!的主要内容,如果未能解决你的问题,请参考以下文章
在 c# 中使用 ifdef 和联合的 Marshall 结构
如何正确地将这些转换为 c#,marshall,以便我可以将这些结构传递给 DLL (c++)?
sql [存档Marshall中的陈旧瞬态]从Marshall Inbox归档旧对象#marshall
刚入手 marshall jvm 410 和 1960a 箱体,请问怎么接