具有属性和实现类的C#接口

具有属性和实现类的C#接口,c#,properties,C#,Properties,我想在界面中放置属性。 如果我这样做,我的问题是: class ClassA: IClassA { public string Id{ get; private set; } 接口: public interface IClassA { string Id{ get; } } 这不会编译,一方面,我希望强制实现类具有该属性,因此我没有在接口中放置“set”,当我尝试编译时,我得到: 你的代码看起来不错。您的接口只指定一个属性getter,因此实现者只需要指定getter。它们

我想在界面中放置属性。
如果我这样做,我的问题是:

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

public interface IClassA
{
    string Id{ get; }
}
这不会编译,一方面,我希望强制实现类具有该属性,因此我没有在接口中放置“set”,当我尝试编译时,我得到:


你的代码看起来不错。您的接口只指定一个属性getter,因此实现者只需要指定getter。它们是否指定了setter,以及setter是公共的还是私有的并不重要。按照规定,所有这三项都应适用于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; }
}
您的代码可以工作:

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();
    }
  }
}

如果编译器出现问题,检查代码的其他部分或发布完整的错误消息,包括代码行。

我刚刚将您的代码复制到一个新的Visual Studio项目中,它编译得非常完美。错误消息是什么?可能您在界面中缺少结尾}?它也为我编译得非常完美
.ClassA.set
-没有提到“Id”在这个错误消息中-可能与代码中的其他部分有关?你不是说“属性获取者”吗?@Todd:对不起-我随意编辑了相应的Lynp,我显然输入得太快了。:)
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();
    }
  }
}