gpt4 book ai didi

c# - 属性私有(private)集;

转载 作者:IT王子 更新时间:2023-10-29 03:53:08 27 4
gpt4 key购买 nike

我知道它只允许类来设置它,但有什么意义呢?

如何解决具有只读 ID 的问题?

假设我有一个人类:

public class Person
{
public string Name { get; set; }
public int Id { get; private set; }
public int Age { get; set; }
}

这是在 Entities.dll 中,由 GUI、BL 和 DAL 使用。

GUI调用BL:

   List<Person> p =  BL.PeopleBL.GetPeople();

为了示例调用 DAL:

...
while(dr.read())
{
returnPersonList.add( new Person{ Age=dr.GetInt32(1), Id=dr.GetInt32(0), Name=dr.GetString(2)})
}
...

当然我不能那样做,因为 Id 是一个私有(private)集;执行此操作的正确方法是什么?

如何让 BL/Dal 设置 Id,而不是在 GUI 上?

或者这甚至不是私有(private)集的正确使用?


我只是想补充一点,这是典型的数据库应用程序,其中 pk 是 ID,不应更改(仅由 BL/DAL)


最佳答案

这是一种可能的解决方案,但不是很干净:

  1. 将您需要公开给 BAL 和 DAL 的属性内部
  2. assemblyinfo.cs 中标记 BAL.dll & DAL.dll Internal Visible

public class Person
{
public Person(int id)
{
this.Id=id;
}

public string Name { get; set; }
public int Id { get; internal set; }
public int Age { get; set; }
}

AssemblyInfo.cs for Entities.dll

[assembly: InternalsVisibleTo("DAL"), InternalsVisibleTo("BAL")]

这样一来,您的所有内部结构都将对 DAL 和 BAL 可见。这可能并不理想,但我只是建议一种可能的解决方案。

关于c# - 属性私有(private)集;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2366075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com