我不确定这里的问题是什么,但我得到以下编译器错误:
错误:
错误3'DataAccess.NHibernate.UnitOfWork.UnitOfWork'没有 实现接口成员'Domain.Repository.UnitOfWork.IUow.DBC'。 'DataAccess.NHibernate.UnitOfWork.UnitOfWork.DBC'无法实现 'Domain.Repository.UnitOfWork.IUow.DBC'因为它没有 匹配返回类型 'Domain.Repository.UnitOfWork.IDBContext'。 .. \ DataAccess.NHibernate \ UnitOfWork \ UnitOfWork.cs 12 11 DataAccess.NHibernate
贝娄是我的代码
UnitOfWork.cs
namespace DataAccess.NHibernate.UnitOfWork
{
class UnitOfWork : IUow, IDisposable
{
public DBContext DBC { get; set; }
public ISession Session;
public ITransaction Transaction;
public void BeginTransaction(IsolationLevel isolationLevel)
{
//some code
}
public void Commit()
{
//some code
}
public void Rollback()
{
//some code
}
public void Dispose()
{
//some code
}
public UnitOfWork(ISession session)
{
//some code
}
}
}
DBContext.cs
namespace DataAccess.NHibernate.UnitOfWork
{
public class DBContext
{
public IUow UnitOfWork { get; set; }
public IUserRepository UserRepository
{
get
{
return new NHibernateUsersRepository(this.UnitOfWork);
}
}
}
}
IUow.cs
namespace Domain.Repository.UnitOfWork
{
public interface IUow : IDisposable
{
IDBContext DBC { get; set; }
void Commit();
void BeginTransaction(IsolationLevel isolationLevel);
void Dispose();
void Rollback();
}
}
IDBContext.cs
namespace Domain.Repository.UnitOfWork
{
public interface IDBContext
{
}
}
答案 0 :(得分:2)
class UnitOfWork : IUow, IDisposable
{
public DBContext DBC { get; set; }
...
}
需要
class UnitOfWork : IUow, IDisposable
{
public IDBContext DBC { get; set; }
...
}
以便它与您的界面匹配:
public interface IUow : IDisposable
{
IDBContext DBC { get; set; }
...
}
错误消息说明了这个
Domain.Repository.UnitOfWork.IUow.DBC' because it does not have the matching return type of 'Domain.Repository.UnitOfWork.IDBContext'
答案 1 :(得分:1)
您在合约(界面)中说明您将返回:
IDBContext DBC { get; set; }
但你实现它:
public DBContext DBC { get; set; }
没有实现IDBContext:
public class DBContext
将其更改为:
public class DBContext : IDBContext
它应该有用。