无法实现接口成员,因为它没有匹配的返回类型

时间:2015-03-04 09:45:07

标签: c# .net class interface

我不确定这里的问题是什么,但我得到以下编译器错误:

错误:

  

错误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
    {
    }
}

2 个答案:

答案 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

它应该有用。

相关问题