我想把属性放在界面中。
如果我这样做,我的问题:
class ClassA: IClassA
{
public string Id{ get; private set; }
界面:
public interface IClassA
{
string Id{ get; }
}
这不会编译,一方面,我想强制实现类具有属性,所以我没有在接口中放置“set”,当我尝试编译时,我得到:
.ClassA.set' is not public.
我想把属性放在界面中。
如果我这样做,我的问题:
class ClassA: IClassA
{
public string Id{ get; private set; }
界面:
public interface IClassA
{
string Id{ get; }
}
这不会编译,一方面,我想强制实现类具有属性,所以我没有在接口中放置“set”,当我尝试编译时,我得到:
.ClassA.set' is not public.
你的代码看起来不错。您的接口仅指定了一个属性 getter,因此实现者只需要指定 getter。他们是否指定了一个 setter,以及 setter 是公共的还是私有的都无关紧要。所有这 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; }
}
您的代码有效:
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();
}
}
}
如果您的编译器有问题,请检查代码的其他部分或发布完整的错误消息,包括代码行。