System.MarshalByRefObject 类
方法描述
允许在支持远程处理的应用程序中跨应用程序域边界访问对象。
语法定义(C# System.MarshalByRefObject 类 的用法)
[SerializableAttribute] [ComVisibleAttribute(true)] public abstract class MarshalByRefObject
构造函数
构造函数名称 | 构造函数描述 |
---|---|
MarshalByRefObject | 初始化 MarshalByRefObject 类的新实例。 |
成员/方法
方法名称 | 方法描述 |
---|---|
CreateObjRef | 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 |
Equals(Object) | 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
GetHashCode | 用作特定类型的哈希函数。 (继承自 Object。) |
GetLifetimeService | 检索控制此实例的生存期策略的当前生存期服务对象。 |
GetType | 获取当前实例的 Type。 (继承自 Object。) |
InitializeLifetimeService | 获取控制此实例的生存期策略的生存期服务对象。 |
MemberwiseClone() | 创建当前 Object 的浅表副本。 (继承自 Object。) |
MemberwiseClone(Boolean) | 创建当前 MarshalByRefObject 对象的浅表副本。 |
ToString | 返回表示当前对象的字符串。 (继承自 Object。) |
提示和注释
应用程序域是一个操作系统进程中一个或多个应用程序所驻留的分区。 同一应用程序域中的对象直接通信。 不同应用程序域中的对象的通信方式有两种:一种是跨应用程序域边界传输对象副本,一种是使用代理交换消息。
MarshalByRefObject 是通过使用代理交换消息来跨应用程序域边界进行通信的对象的基类。 不是从 MarshalByRefObject 继承的对象根据值隐式封送。 当远程应用程序引用根据值封送的对象时,将跨应用程序域边界传递该对象的副本。
MarshalByRefObject 对象在本地应用程序域的边界内可直接访问。 远程应用程序域中的应用程序首次访问 MarshalByRefObject 时,会向该远程应用程序传递代理。 对该代理后面的调用将封送回驻留在本地应用程序域中的对象。
当跨应用程序域边界使用类型时,类型必须是从 MarshalByRefObject 继承的,而且由于对象的成员在创建它们的应用程序域之外无法使用,所以不得复制对象的状态。
System.MarshalByRefObject 类例子
下面的示例演示从 MarshalByRefObject 派生的、随后将在远程处理中使用的类。
using System; using System.Runtime.Remoting; using System.Security.Permissions; public class SetObjectUriForMarshalTest { class TestClass : MarshalByRefObject { } [SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.RemotingConfiguration)] public static void Main() { TestClass obj = new TestClass(); RemotingServices.SetObjectUriForMarshal(obj, "testUri"); RemotingServices.Marshal(obj); Console.WriteLine(RemotingServices.GetObjectUri(obj)); } }
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。