我有一个只读属性的接口(interface)
public interface IPerson
{
string Name { get; }
}
和一个具体的类...
public class Person : IPerson
{
public Person()
{
Name = "Person";
}
public string Name
{
get
{
return Name;
}
}
}
我希望 Name 只能在该类的外部读取,但如何在具体类中设置它?
错误:无法将 Person.Name 分配给。
如何在 Person 类中设置此属性的值?
最佳答案
这与接口(interface)没有任何关系,您只是错误地声明了属性。在 C# 6 中,您可以像这样创建一个只读属性:
public class Person : IPerson
{
public Person()
{
Name = "Person";
}
public string Name { get; }
}
在早期版本中,您可以使用可设置的只读支持字段:
public class Person : IPerson
{
private readonly string _name;
public Person()
{
_name = "Person";
}
public string Name
{
get { return _name; }
}
}
请注意,接口(interface)只要求属性有一个 getter,实现不必是只读的。如果您有理由修改该值,您可以添加一个 setter :
public class Person : IPerson
{
public Person()
{
Name = "Person";
}
public string Name { get; set; }
}
如果您只需要能够从类中更改值,则 setter 可以是私有(private)的。
关于c# - 设置在具体类的接口(interface)中定义的只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520797/