我有一個泛型類是這樣的:如何強制泛型類使用T構造函數的參數?
public class Mapper<TEntity, TDataAccess>
where TEntity : Common.IEntity
where TDataAccess : DataAccess, new()
{
public TDataAccess DataAccess { get; set; }
public Mapper()
{
DataAccess = new TDataAccess();
}
/*
* ...
* */
}
和數據訪問是這樣的:
public class DataAccess
{
public DataAccess()
{}
public DataAccess(string tranName)
{}
// CRUD functionality and other data access staff
}
和繼承類的形式DataAccess
:
public class UserDataAccess:DataAccess
{
public UserDataAccess():base(string.Empty)
{
}
public UserDataAccess(string tranName):base(tranName)
{
// Something to do with user
}
}
終於從映射UserMapper
:
public class UserMapper : Mapper<User,UserDataAccess>
{
// Mapping entity properties with datarows columns
}
現在想象一下,我需要發送tranName
給定TDataAccess
的UserMapper
。如何在不改變DataAccess
類的情況下做到這一點?我無法訪問DataAccess
的源代碼,並且泛型沒有實現類型不同的構造函數重載。 我知道我可以在UserDataAccess
上擁有一個屬性並在需要時填充它,但由於線程安全問題,我無法填充該屬性。
User
類是一個普通的實體 - 它只有屬性。
Activator.CreateInstance工程師。謝謝;) – MDP 2012-01-03 10:07:31