博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net System.Object 对象实现代码
阅读量:6263 次
发布时间:2019-06-22

本文共 2506 字,大约阅读时间需要 8 分钟。

 

  1
None.gif
//
 Decompiled by Salamander version 1.0.6
  2
None.gif
//
 Copyright 2002 Remotesoft Inc. All rights reserved.
  3
None.gif
//
 
http://www.remotesoft.com/salamander
  4
None.gif
  5
None.gif
using
 System.Reflection;
  6
None.gif
using
 System.Runtime;
  7
None.gif
using
 System.Runtime.Remoting;
  8
None.gif
using
 System.Runtime.Remoting.Messaging;
  9
None.gif
 10
None.gif
namespace
 System
 11
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
{
 12InBlock.gif  [ClassInterfaceAttribute(ClassInterfaceType.AutoDual)]
 13InBlock.gif  [SerializableAttribute()]
 14InBlock.gif  public class Object
 15ExpandedSubBlockStart.gifContractedSubBlock.gif  dot.gif{
 16InBlock.gif
 17InBlock.gif    public Object()
 18ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 19ExpandedSubBlockEnd.gif    }
 20InBlock.gif
 21InBlock.gif    // internalcall
 22InBlock.gif    private Type InternalGetType();
 23InBlock.gif
 24InBlock.gif    // internalcall
 25InBlock.gif    private Type FastGetExistingType();
 26InBlock.gif
 27InBlock.gif    public virtual string ToString()
 28ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 29InBlock.gif      return GetType().FullName;
 30ExpandedSubBlockEnd.gif    }
 31InBlock.gif
 32InBlock.gif    // internalcall
 33InBlock.gif    public virtual bool Equals(object obj);
 34InBlock.gif
 35InBlock.gif    public static bool Equals(object objA, object objB)
 36ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 37InBlock.gif      if (objA == objB)
 38ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
 39InBlock.gif        return true;
 40ExpandedSubBlockEnd.gif      }
 41InBlock.gif      if (objA == null || objB == null)
 42ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
 43InBlock.gif        return false;
 44ExpandedSubBlockEnd.gif      }
 45InBlock.gif      else
 46ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
 47InBlock.gif        return objA.Equals(objB);
 48ExpandedSubBlockEnd.gif      }
 49ExpandedSubBlockEnd.gif    }
 50InBlock.gif
 51InBlock.gif    public static bool ReferenceEquals(object objA, object objB)
 52ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 53InBlock.gif      return objA == objB;
 54ExpandedSubBlockEnd.gif    }
 55InBlock.gif
 56InBlock.gif    // internalcall
 57InBlock.gif    public virtual int GetHashCode();
 58InBlock.gif
 59InBlock.gif    public Type GetType()
 60ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 61InBlock.gif      Type type = FastGetExistingType();
 62InBlock.gif      if (type == null)
 63ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
 64InBlock.gif        type = InternalGetType();
 65ExpandedSubBlockEnd.gif      }
 66InBlock.gif      return type;
 67ExpandedSubBlockEnd.gif    }
 68InBlock.gif
 69InBlock.gif    ~Object()
 70ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 71ExpandedSubBlockEnd.gif    }
 72InBlock.gif
 73InBlock.gif    // internalcall
 74InBlock.gif    protected object MemberwiseClone();
 75InBlock.gif
 76InBlock.gif    private void FieldSetter(string typeName, string fieldName, object val)
 77ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 78InBlock.gif      FieldInfo fieldInfo = GetFieldInfo(typeName, fieldName);
 79InBlock.gif      if (fieldInfo.IsInitOnly)
 80ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
 81InBlock.gif        throw new FieldAccessException(Environment.GetResourceString("FieldAccess_InitOnly"));
 82ExpandedSubBlockEnd.gif      }
 83InBlock.gif      Message.CoerceArg(val, fieldInfo.FieldType);
 84InBlock.gif      fieldInfo.SetValue(this, val);
 85ExpandedSubBlockEnd.gif    }
 86InBlock.gif
 87InBlock.gif    private void FieldGetter(string typeName, string fieldName, ref object val)
 88ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 89InBlock.gif      FieldInfo fieldInfo = GetFieldInfo(typeName, fieldName);
 90InBlock.gif      val = fieldInfo.GetValue(this);
 91ExpandedSubBlockEnd.gif    }
 92InBlock.gif
 93InBlock.gif    private FieldInfo GetFieldInfo(string typeName, string fieldName)
 94ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 95InBlock.gif      Type type;
 96InBlock.gif
 97InBlock.gif      for (type = GetType(); type != null && !type.FullName.Equals(typeName); type = type.BaseType)
 98ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
 99ExpandedSubBlockEnd.gif      }
100InBlock.gif      if (type == null)
101ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
102InBlock.gif        throw new RemotingException(String.Format(Environment.GetResourceString("Remoting_BadType"), typeName));
103ExpandedSubBlockEnd.gif      }
104InBlock.gif      FieldInfo fieldInfo = type.GetField(fieldName, 21);
105InBlock.gif      if (fieldInfo == null)
106ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
107InBlock.gif        throw new RemotingException(String.Format(Environment.GetResourceString("Remoting_BadField"), fieldName, typeName));
108ExpandedSubBlockEnd.gif      }
109InBlock.gif      else
110ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
111InBlock.gif        return fieldInfo;
112ExpandedSubBlockEnd.gif      }
113ExpandedSubBlockEnd.gif    }
114ExpandedSubBlockEnd.gif  }
115InBlock.gif
116ExpandedBlockEnd.gif}
117
None.gif
你可能感兴趣的文章
Linux系统(一)文件系统、压缩、打包操作总结
查看>>
微信小程序把玩(四十)animation API
查看>>
Android Application中的Context和Activity中的Context的异同
查看>>
MyBatis接口的简单实现原理
查看>>
从0移植uboot (二) _uboot启动流程分析
查看>>
C++异常实现与longjmp, setjmp,栈指针EBP, Active Record
查看>>
Python高级特性(切片,迭代,列表生成式,生成器,迭代器)
查看>>
CISCO知识扫盲
查看>>
[原创]浅谈对华为34岁以上员工“退休”
查看>>
一个hadoop hdfs put 文件失败的小情况
查看>>
C语言 · 计算时间
查看>>
JavaEE开发之Spring中的依赖注入与AOP编程
查看>>
spi flash偶尔出现写入错误的情况
查看>>
Native SBS for Android
查看>>
vue过渡和animate.css结合使用
查看>>
C#编程(七十四)----------释放非托管资源
查看>>
如何在Java 环境下使用 HTTP 协议收发 MQ 消息
查看>>
java-容器-ArrayList
查看>>
集合体系
查看>>
RocketMQ与Kafka对比(18项差异)
查看>>