我有一个类定义如下;用于声明抽象泛型类型变量的C#语法
public abstract class Repository<TEntity, TDataContext> : DisposableBaseClass
where TEntity : class
where TDataContext : DataContext, new()
{...contains Linq to SQL related functionality
在具体的子类中,我将类型定义为如此;
public class ConcreteRepo : Repository<LSTableClass, LSDataContext>
在第二梯队了,我有保持Repository对象为私有变量的业务对象。
这很好;
private ConcreteRepo _repository;
不过,我当时重构了这一点,为所有业务对象的父类 - 这个父类持有库/工具Dispose模式处置库的等
我的问题是,我只是无法获得变量声明的语法权限。
我最近来的是;
protected Repository<Object, DataContext> _repository;
但是这给编译错误:
“错误1‘System.Data.Linq.DataContext’必须是一个非抽象类型与公共参数构造函数,以便用它作为参数'TDataContext'在通用类型或方法'....存储库'...“
我试过各种其他的东西,但打其他问题。
在继承此抽象类的业务层对象中,我正在创建和使用具有强制转换的_repository变量;
(Repository<LSTableClass, LSDataContext>)_repository = new ConcreteRepo();
- ,我认为这将是罚款,假设我可以用鼠标右键在父获得此声明。
如果我不能得到这个工作,我必须在每个业务对象中声明_repository,具有完整/具体类型的详细信息,并在每个业务对象中实现dispose模式以清除。不是世界末日,但我不想。
所以我正确理解“私人ConcreteRepo _repository;”在你重构的类中?你想让你写的类包含这个存储库字段* AND *是Repository的TEntity类型参数?确切地说,你重构的东西对我来说不是很清楚。 – 2009-05-04 22:17:54