Type类实例在不同应用程序域有不同副本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Type类实例在不同应用程序域有不同副本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1951字,纯文字阅读大概需要3分钟。
内容图文
原文链接:http://www.cnblogs.com/zhy2002/archive/2008/07/17/1245160.html 今天看CLR via C#,看到上面说,同一个类型会在不同应用程序域中存在多个映像,于是写了一段代码证明一下这个情况。using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Reflection;
namespace?RemotingTest
{
????class?Program
????{
????????static?void?Main(string[]?args)
????????{
????????????AppDomain?ad?=?AppDomain.CreateDomain("AppDomain2");
????????????RemotingObj?ro?=?ad.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName,?"RemotingTest.RemotingObj")?as?RemotingObj;//ro是本地的一个透明代理,指向新创建应用程序域中的对象
????????????Console.WriteLine(ro.IndexOf("Michael?Jackson",?"Jack"));//到这里远程对象一定已经创建了,但是RemotingObj.Flag仍然为0,说明本应用程序域中的Type对象没有被设置,设定的是ad中的typeof(RemotingObj)
????????????bool?flag?=?System.Runtime.Remoting.RemotingServices.IsTransparentProxy(ro);
????????????Console.WriteLine(flag);
????????????RemotingObj?ro2?=?new?RemotingObj();//本应用程序域中的对象
????????????flag?=?System.Runtime.Remoting.RemotingServices.IsTransparentProxy(ro2);
????????????Console.WriteLine(flag);
????????????int?a?=?ro.TypeHashCode();
????????????a?=?ro2.TypeHashCode();//通过F10可以看到hashcode变化了?说明typeof(RemotingObj)在不同appdomain中表示不同的对象
????????????Console.Read();
????????}
????}
????public?class?RemotingObj?:?MarshalByRefObject
????{
????????public?RemotingObj()
????????{
????????????RemotingObj.Flag?=?112;
????????????Console.WriteLine(string.Format("RemotingObj({0})?is?created?in?{1}",?this.GetHashCode(),?AppDomain.CurrentDomain.FriendlyName));
????????}
????????public?int?IndexOf(string?str1,?string?str2)
????????{
????????????return?str1.IndexOf(str2);
????????}
????????public?int?TypeHashCode()
????????{
????????????return?typeof(RemotingObj).GetHashCode();
????????}
????????public?static?int?Flag;
????}
}
转载于:https://www.cnblogs.com/zhy2002/archive/2008/07/17/1245160.html
内容总结
以上是互联网集市为您收集整理的Type类实例在不同应用程序域有不同副本全部内容,希望文章能够帮你解决Type类实例在不同应用程序域有不同副本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。