前言:本文開始我們便一步一步的來實現這個權限系統的初步設計-框架搭建,首先我要說的是我們需要開發工具Visual Studio 2012或者10也行,其次是我們要有SQL Server數據庫,如果是Visual Studio 2010的話,你還要安裝MVC4的開發文件,這個是嗎?我不記得了,誰可以回答我一下的,我一直用2012,都是集成好的,所以不太清楚。因為這篇博客比較簡單,只是建立一個簡單的架構,所以我順便進行一下MVC的知識補充,後面我也會這樣穿插著介紹項目中遇到的技術,下面開始今天之旅。
1.自動屬性
(1)自動屬性(Auto-Implemented Properties),C#自動屬性可以避免原來我們手工的來聲明一個私有成員變量以及和屬性get,set的書寫。
復制代碼 代碼如下:
public class Kencery //聲明一個Kencery的類
{
public int ID{get;set;} //主鍵ID
public string Name{get;private set;} //只讀屬性名字
public int Age{get;set;} //年齡
}
2.隱式類型var
(1)現在越來越多的項目中你可以看到var,這是什麼意思呢?其實這就是C#3.0新特性提供的隱士類型var,var關鍵字指示編譯器根據初始化語句右側的表達式推斷變量的類型。
復制代碼 代碼如下:
var Kencery=”大家晚上好”; //定義變量
var list=new List<int>(); //定義一個List集合
var Kencery=new{ID=1,Name=”HYL”,age=24} //對象初始化起定義的類型
var geners = from n in StoreContract.ProductCatalogs
where n.IsSystem == false
select n;
return View(geners);
//Linq的使用,這個在後面我們會大量的使用,大家沒學過的可以自學。
(2) var有這麼大的功能,那麼他有什麼缺點呢,我們這裡列舉大致一下
1)只有在同一個語句中聲明和初始化局部變量時,才能使用var,不能將該變量初始化為null,方法組或者匿名方法。
2)不能將var用於類范圍的域。
3)由var聲明的變量不能用在初始化表達式中,換句話說,此表達式是合法的:int i=(i=20);,但是後面的這個表達式會產生編譯錯誤:var i=(i=20)。
4)不能在同一個語句中初始化多個隱式類型的變量。
5)如果范圍中有一個名為var的類型,則var關鍵字將解析為該類型名稱,而不做為隱式類型局部變量聲明的一部分去處理。
3.匿名類
(1)將一組只讀屬性封裝到單個對象中,而無需首先顯示定義一個類型,類型名由編譯器生成,並且不能在源代碼級使用,每個屬性的類型由編譯器推斷。[var]
(2)用來初始化屬性的表達式不能是null,匿名函數和指針類型。
var Kencery=new{ID=1,Name=”HYL”,Age=24}
4.對象初始化器和集合初始化器
(1)對象初始化器是利用了編譯器對對象中對外可見的字段或者屬性進行按序賦值,在編譯還是隱式調用了構造函數,對字段或屬性的賦值可以是一個或者多個。
復制代碼 代碼如下:
List<Kencery> kencery=new List<Kencery>{ //Kencery類
new Kencery{ID=1,Name=”Hanyinglong”,Age=19},
New Kencery{ID=2,Name=”HYL”},
null
};
Person p=new Person{ ID=1,Name=”HYL”,Age=19 };
5.擴展方法
(1)擴展方法是一種特殊的靜態方法,它定義在一個靜態類中,但可以在其他類的對象上向調用實例方法那樣進行調用。因此,通過擴展方法,我們就可以在不修改一個類型的前提下對一個類型進行功能上的擴充,這種方法並不會產生新的類型,而是采用向已有類中加入新方法的方式來完成功能的擴展。
(2)在對已有類進行擴展時,我們需要將所有的擴展方法都寫在一個靜態類中,這個靜態類就相當於存放擴展方法的容器,所有的擴展方法都可以寫在這裡面。擴展方法與普通方法的聲明方式不同,擴展方法的第一個參數以this關鍵字開始,後面跟被擴展的類型,然後才是真正的參數列表。
復制代碼 代碼如下:
public static 返回類型 擴展方法名(this 要擴展的類型 參數名稱[,擴展方法參數列表])
{
}
public static int ToInt32(this string s) //擴展方法將字符串轉換為整形
{
return Int32.Parse(s);
}
6.Lambda表達式
(1) ”Lambda表達式”是一個匿名函數,他可以包含表達式和語句,可用於創建委托。
(2) 運算符 =>,該運算符讀作:”goes to”。
(3) 格式:(input parameters)=>expression
delegate bool DelDemo(int a,int b); //定義委托
DelDemo Lambda=(int a,int b)=>a>b //使用Lambda表達式表示a是否大於b
Console.WriteLine(Lambda(1,4));
7.項目整體框架流程圖
(1)上面扯了這麼多,其實跟我們今天的博客沒什麼用,只是一些准備工作,也是復習一下這些知識點,下面我們將新建一個MVC4的程序,如何新建一個MVC4的程序,相信大家都已經會了,然後搭建框架,搭建的框架如圖所示:
(2) 然後我們再LYZJ.UserLimitMVC.Model層設計數據庫,在裡面建立一個空的Edmx模型,如圖所示:
(3) 上面我們建立了四個類庫和一個MVC4.0的項目,大家仔細看一下,如果大家對這四個類庫的作用不太明確的話,我建議大家可以去看看三層的架構,或者在下面給我留言,現在就不往出寫了。
(4) 這篇博客到這裡就結束了,下篇博客我們開始講述:使用面對接口編程變成對數據庫訪問層進行介紹。