2

我一直在尝试一些 n 层架构,我真的想知道为什么这段代码无法编译......

它说修饰符 public 对此项目无效。但为什么不呢?我需要能够从 BLL 对象访问项目 IRepository.AddString() 但它只是不允许我将其公开....

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            BLL myBLL = new BLL();

        }
    }

    interface IRepository<T>
    {
        void AddString();
    }

    interface IStringRepo : IRepository<string>
    {
        List<string> GetStrings();
    }

    public class BLL : IStringRepo
    {
        public List<string> FilterStrings()
        {
            return new List<string>() { "Hello", "World" };
        }

        public List<string> IStringRepo.GetStrings()
        {
            throw new NotImplementedException();
        }

        public void IRepository<string>.AddString()
        {
            throw new NotImplementedException();
        }
    }
}
4

2 回答 2

3

这是一个显式实现的成员,它始终是私有的。

从声明中删除IStringRepo.以创建一个也实现该接口的普通公共成员。

于 2012-04-15T15:31:07.370 回答
0

显式实现的接口不能使用可见性修饰符。

public List<string> IStringRepo.GetStrings() 

应该:

public List<string> GetStrings() 
于 2012-04-15T15:31:55.143 回答