首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 中创建一个对象,问一上这个对象所有的成员是什么?多谢C#高手

2012-07-29 
C# 中创建一个对象,问一下这个对象所有的成员是什么?谢谢C#高手C# 中创建一个对象,问一下这个对象所有的成

C# 中创建一个对象,问一下这个对象所有的成员是什么?谢谢C#高手
C# 中创建一个对象,问一下这个对象所有的成员是什么?谢谢C#高手。

public class c
{
}
c obj = new c()

obj对象是一个空类(类里面什么也没有)实例化而来的。但我相信除了继承自System.Object的成员之外。微软肯定还对这个对象添加了不少私有成员(只是不暴露接口而已,这可能涉及.net framwork底层)。怎样获得这些私有成员。还有,他们各有什么意义。

[解决办法]

C# code
[Serializable, ComVisible(true), ClassInterface(ClassInterfaceType.AutoDual)]public class Object{    // Methods    public virtual bool Equals(object obj)    {        return InternalEquals(this, obj);    }    public static bool Equals(object objA, object objB)    {        return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));    }    private void FieldGetter(string typeName, string fieldName, ref object val)    {        val = this.GetFieldInfo(typeName, fieldName).GetValue(this);    }    private void FieldSetter(string typeName, string fieldName, object val)    {        FieldInfo fieldInfo = this.GetFieldInfo(typeName, fieldName);        if (fieldInfo.IsInitOnly)        {            throw new FieldAccessException(Environment.GetResourceString("FieldAccess_InitOnly"));        }        Message.CoerceArg(val, fieldInfo.FieldType);        fieldInfo.SetValue(this, val);    }    [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]    protected override void Finalize()    {    }    private FieldInfo GetFieldInfo(string typeName, string fieldName)    {        Type baseType = this.GetType();        while (baseType != null)        {            if (baseType.FullName.Equals(typeName))            {                break;            }            baseType = baseType.BaseType;        }        if (baseType == null)        {            throw new RemotingException(string.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Remoting_BadType"), new object[] { typeName }));        }        FieldInfo field = baseType.GetField(fieldName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);        if (field == null)        {            throw new RemotingException(string.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Remoting_BadField"), new object[] { fieldName, typeName }));        }        return field;    }    public virtual int GetHashCode()    {        return InternalGetHashCode(this);    }    [MethodImpl(MethodImplOptions.InternalCall)]    public extern Type GetType();    [MethodImpl(MethodImplOptions.InternalCall)]    internal static extern bool InternalEquals(object objA, object objB);    [MethodImpl(MethodImplOptions.InternalCall)]    internal static extern int InternalGetHashCode(object obj);    [MethodImpl(MethodImplOptions.InternalCall)]    protected extern object MemberwiseClone();    [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]    public static bool ReferenceEquals(object objA, object objB)    {        return (objA == objB);    }    public virtual string ToString()    {        return this.GetType().ToString();    }}
[解决办法]
obj.GetType().BaseType.GetType().GetProperties()

热点排行