我有一个泛型类是这样的:如何强制泛型类使用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