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

これは明示的に実装されたmemberであり、常に非公開です。

宣言から削除IStringRepo.して、インターフェイスも実装する通常のパブリック メンバーを作成します。

于 2012-04-15T15:31:07.370 に答える
0

明示的に実装されたインターフェイスは、可視性修飾子を使用できません。

public List<string> IStringRepo.GetStrings() 

次のようにする必要があります。

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