第四回 基类中的修饰符,应该根据你对架构的理解去定义它们,没有绝对的
基类中的修饰符,其实就是C#里的那几种修饰符,public ,proteced,internal,privat这四种基础类型,当然也还一个组合类型internal protected,它们都是C#里最基础的东西,今天觉得有必要再说一下。
我还是觉得单讲修饰符,除了不好理解外,还有就是没什么意义,我们一定要把代码放到项目中才有它的价值,不是吗,呵呵。
一 public ,希望在所有地方都使用的成员,如一个获得结果集的方法
1 public virtual IQueryable<TEntity> GetEntities<TEntity>() where TEntity : class 2 { 3 return EF_DB.Set<TEntity>(); 4 }
二 internal,只在本程序集中使用这个成员,对外部不可见,如一个数据层的工厂类,它用来创建数据上下文
1 internal sealed class DbFactory 2 { 3 #region Fields 4 static System.Timers.Timer sysTimer = new System.Timers.Timer(10000); 5 volatile static Dictionary<Thread, DbContext[]> divDataContext = new Dictionary<Thread, DbContext[]>(); 6 #endregion 7 }
三 protected,它只对子类(派生类)公用访问权,这对于基类中的一些只对子类公开的属性与方法比较奏效
1 /// <summary> 2 /// 统一数据上下文对象 3 /// </summary> 4 protected DbContext EF_DB; 5 6 #region Constructors 7 public DataBase(DbContext ef_DB) 8 : this(() => { return ef_DB; }) 9 { } 10 public DataBase(Func<DbContext> func) 11 { 12 this.EF_DB = func(); 13 } 14 #endregion
四 private,本类内部使用的对象,对外部隐藏,一般是对一些复杂的代码进行提取,形成一个独立的单一功能的方法
1 /// <summary> 2 /// 排序操作方法 3 /// </summary> 4 /// <typeparam name="TEntity"></typeparam> 5 /// <typeparam name="TKey"></typeparam> 6 /// <returns></returns> 7 void AddOrderByList(Expression<Func<TEntity, object>> predicate) 8 { 9 OrderByList.Add(predicate); 10 }
OK,以上四种修饰符大家如果能完全掌握,我觉得就够用了,呵呵。
还有,学习.net的一种方式,就是多看小微自己工程师写的代码,会叫你受益匪浅!