通过表名反射查找获得BaseBusiness - BaseBusinessGetByTableNameAndAssembly

2017-03-17 11:52:47  访问(1467) 赞(0) 踩(0)


        /// <summary>
        /// SlowX.Core.Business.BaseBusiness对应的Type
        /// </summary>
        protected Type TypeBaseBusiness = typeof(SlowX.Core.Business.BaseBusiness);


       
        /// <summary>
        /// 是否是BaseBusiness - IsSlowXCoreBaseBusiness 
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        protected bool IsSlowXCoreBaseBusiness(Type t)
        {
            if (t == null)
                return false;


            if (t == TypeBaseBusiness)
                return true;

            return IsSlowXCoreBaseBusiness(t.BaseType);
        }

        /// <summary>
        /// 通过Assembly和Type,获得BaseBusiness对应的instance - BaseBusinessGetByType
        /// </summary>
        /// <param name="ass"></param>
        /// <param name="typeValue"></param>
        /// <returns></returns>
        protected SlowX.Core.Business.BaseBusiness
            BaseBusinessGetByType
            (
                Assembly ass,
                Type typeValue
            )
        {
            FieldInfo info 
                = typeValue.GetField("instance", BindingFlags.Static | BindingFlags.Public);

            if (info == null)
            {
                return null;
            }

            return info.GetValue(null) as BaseBusiness;  
        }

        /// <summary>
        /// 通过表名反射查找获得BaseBusiness - BaseBusinessGetByTableNameAndAssembly
        /// </summary>
        /// <param name="strName"></param>
        /// <returns></returns>
        public SlowX.Core.Business.BaseBusiness
            BaseBusinessGetByTableNameAndAssembly
            (
                string strName
            )
        {
            if (strName == null)
                return null;

            strName = strName.Trim().ToUpper();

            if (strName.Length == 0)
                return null;

            Assembly ass = typeof(eKingEkVehicleLibHelper).Assembly;

            Type[] tA = ass.GetTypes();

            foreach (Type t in tA)
            {
                if (!IsSlowXCoreBaseBusiness(t))
                    continue;

                if (t.FullName.EndsWith("." + strName))
                {
                    return BaseBusinessGetByType(ass, t);
                }
            }

            return null;
        }


标签:通过表名反射查找获得BaseBusiness - BaseBusinessGetByTableNameAndAssembly 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)