a bug

Mar 16, 2010 at 11:52 AM

假定有这样一个测试类(没有Key只是为了反射方便)

public class vt_Privilege2 : IDbObject
    {
        [BelongsTo]
        public vt_Privilege2 Parent { get; set; }
    }

public abstract class vt_Privilege2 : IDbObject
    {
        [BelongsTo]
        public abstract vt_Privilege2 Parent { get; set; }
    }

这两个类分别进行

var oi = ObjectInfo.GetInstance(typeof(vt_Privilege2));

的时候会进入

D:\DbEntry-64587\src\Lephone.Data\Common\ObjectInfo_ctor.cs

的104行

foreach (FieldInfo fi in t.GetFields(ClassHelper.InstanceFlag))
            {
                if (!fi.IsPrivate)
                {
                    MemberAdapter m = MemberAdapter.NewObject(fi);
                    ProcessMember(m, ret, kfs);
                }
            }

因为Abstract的那个居然会得到一个FieldInfo,并且是个fi.IsPrivate=false

但是没有Abstract的那个也会得到一个FieldInfo,并且是个fi.IsPrivate=true

这样就导致了没有Abstract的那个取不到BelongsTo这个RelationshipField

解决方法正在想。

初步想用

var t1=typeof(vt_Privilege2);
            var ps=t1.GetProperties();
            var ass=ps[0].GetCustomAttributes(typeof(BelongsToAttribute), false);

类似于这样的方法加在什么地方

Mar 16, 2010 at 12:13 PM

哦了,原来belongsto只能用于abstract