具有属性和实现类的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();
}
}
}