- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 C# 做一个项目,我遇到了以下问题:
我有一些数据类型的类,例如 Person 类,它保存有关一个人的信息。
另外,我还有一个DataManager类,负责管理我程序中的人员。如果您想添加、获取、查找或删除一个人,您只能通过 DataManager 类来完成。
问题是我不希望除 DataManager 类之外的任何人都能够更改 Person 对象。例如,如果有人调用 DataManager.getPerson(int ID)
,他们将获得一个 Person 对象,并且能够使用该 Person 对象的 setter 函数来更改其内容(名字、姓氏、身份证等)。
我想避免这种情况。我只希望 DataManager 类能够更改 Person 对象(通过 DataManager.changeFirstNameForPerson(int ID, string name)
等方法)。
可以实现该目标的最佳类结构是什么?
最佳答案
好吧,您永远无法阻止人们 100% 更改这些值。他们总是可以通过反射(reflection)。
但是,从 API 的角度来看,您可以将 Person 类的所有 getter 公开,并将所有 setter 公开。只要 Person 和 DataManager 类在同一个程序集中,DataManager 就可以很好地访问 setter,但引用该程序集的其他应用程序则不能。
public class Person
{
public string Fname { get; internal set; }
}
public class DataManager
{
public void ChangeNameForPerson(int id, string fname)
{
Person p = Person.GetById(id);
// Inside the same assembly. Setter is accessible
p.Fname = fname;
}
}
在程序集之外,你会有这个:
Person p = DataManager.GetPerson(1);
p.Fname = "asdf"; // Compile time error
DataManager.ChangeNameForPerson(1, "asdf"); // Works fine
关于c# - 数据管理 - 只读数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3167831/
推荐使用以下哪种 javascript 数据管理方法? jLinq jOrder 我熟悉 jLinq,但不确定是否使用 jLinq 或 jOrder。更喜欢具有更好 API 的那个。 最佳答案 jLi
我正在用 C# 做一个项目,我遇到了以下问题: 我有一些数据类型的类,例如 Person 类,它保存有关一个人的信息。 另外,我还有一个DataManager类,负责管理我程序中的人员。如果您想添加、
我不太习惯使用 Ajax,因为我刚刚开始使用它。我的问题如下: 管理使用 Ajax 获取的数据的最佳方法是什么? 我有一个脚本,可以从数据库中获取数据并根据用户过滤器和订单条件以不同的方式显示数据。到
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为 AngularJS 寻找一个简单的 CRUD 模板系统,该系统动态创建 UI 以通过 REST 管理实体。有没有已经做到这一点的东西或易于调整的模板? 理想情况下,我所要做的就是指定一个 R
我有以下收集政策演变的数据框: Df <- data.frame(Id_policy = c("A_001", "A_002", "A_003","B_001","B_002"),
我正在学习 .NET 中的 Xml 数据处理。我有以下 XML 格式。 book 1 author 1 10.90
我是一名优秀的程序员,十分优秀!