我有一Node
堂课:
public class Node
{
private string name;
private Point3D location;
private int id;
.
.
}
和一个Graph
班级:
public class Graph
{
....
}
id inNode
是只读的,但我只需要从Graph
对象而不是从Graph
类外部设置它的值。我怎样才能做到这一点?
我有一Node
堂课:
public class Node
{
private string name;
private Point3D location;
private int id;
.
.
}
和一个Graph
班级:
public class Graph
{
....
}
id inNode
是只读的,但我只需要从Graph
对象而不是从Graph
类外部设置它的值。我怎样才能做到这一点?
一种可能有帮助(但不能完全修复它)的选项是在属性上使用修饰符internal。这将属性的可访问性范围限制在它所属的程序集内,以及声明为朋友的任何程序集内。
话虽如此,您将 Id 公开但只能从 Graph 对象更改的要求违反了 OO 概念。解决此问题的一种方法是将 Node 对象的创建限制在 Graph 类中,或者从仅可用于 Graph 类的工厂方法中创建。如果你这样做并且只使用一个 getter 将 Id 属性公开为公共,并在构造函数中为其分配一个值,那么你将实现 90% 的你想要的。
您可以使Node
该类成为类的私有嵌套类,Graph
因此只有类可以访问和修改它,您可以拥有从类Graph
中的公共方法访问图形节点的方法Graph
public NameSpace{
public class Node{
public int Id { get; internal set; }
// rest of the code...
}
public class Graph{
// Node Id can be set here...
}
}
这行得通吗?