0

インターフェイスにプロパティを配置したい。
もしそうなら私の問題:

class ClassA: IClassA
{
    public string Id{ get; private set; }

インターフェース:

public interface IClassA
{
    string Id{ get; }
}

これはコンパイルされません。実装クラスにプロパティを持たせたいので、インターフェイスに「設定」を入れませんでした。コンパイルしようとすると、次のようになります。

.ClassA.set' is not public.
4

2 に答える 2

1

あなたのコードは問題ないようです。インターフェイスはプロパティ ゲッターのみを指定するため、実装者はゲッターのみを指定する必要があります。セッターを指定するかどうか、およびセッターがパブリックかプライベートかは問題ではありません。これらの 3 つすべてが、指定された IClassA に対して有効である必要があります。

class ClassA : IClassA
{
    public string Id { get; }
}

class ClassA : IClassA
{
    public string Id { get; set; }
}

class ClassA : IClassA
{
    public string Id { get; private set; }
}
于 2013-03-12T13:02:29.063 に答える
1

あなたのコードは動作します:

namespace ConsoleApplication1
{
  using System;

  internal class ClassA : IClassA
  {
    public ClassA(string id)
    {
      this.Id = id;
    }

    public string Id { get; private set; }
  }

  public interface IClassA
  {
      string Id{ get; }
  }

  class Program
  {
    static void Main()
    {
      var a = new ClassA("Test");

      Console.WriteLine(a.Id);

      Console.ReadLine();
    }
  }
}

コンパイラに問題がある場合は、コードの他の部分を確認するか、コード行を含む完全なエラー メッセージを投稿してください。

于 2013-03-12T13:08:31.177 に答える