C# 泛型類在使用中約束

首先看一下泛型的基本語法函數

訪問修飾符  返回類型 泛型方法名 <T>(T 參數)
 
1): 沒法在泛型方法內部給任何 T 類型建立實例的對象,由於在泛型方法內部不知道傳進來的對象有哪些構造函數
2):約束是對內部的!(對於泛型方法)約束也是會被繼承的!
 
3):給泛型類  加類型(引用類型,值類型)的約束:where T:class,new ( )
 
遇到的問題:
在寫MongodbHelper類的時候,爲了能處理多種類別,因此以下定義了該類:
 public class MongodbHelper<T>
 {
  。。。。。
  }
在該類的實現中有以下操做:

mongo.Connect();spa

var db = mongo.GetDatabase(_databaseName);對象

var collection = db.GetCollection<T>(_collectionName);繼承

collection.Insert(t, true);string

mongo.Disconnect();io

 

這個是對mongo作插入操做的方法,這個時候,db.GetCollection<T>(_collectionName) 這裏的T致使編譯沒法經過,所以查出上面的定義是有誤的,GetCollection的簽名以下:編譯

IMongoCollection<T> GetCollection<T>(string name) where T : class;class

它對T有特殊的本身的約束,所以泛型

在定義的時候也要加上對應的約束,來保證T的約束一致構造函數

相關文章
相關標籤/搜索