我知道它只允许类进行设置,但是有什么意义呢?
如何解决拥有只读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上设置ID?
还是这甚至不是私有(private)集的正确使用?
我只是想补充一点,这是您的典型数据库应用程序,其中pk是ID,并且不应更改(仅由BL/DAL更改)
最佳答案
尽管不是很干净,这是一种可能的解决方案:
internal
BAL.dll
中标记DAL.dll
和assemblyinfo.cs
内部可见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
的Entities.dll
[assembly: InternalsVisibleTo("DAL"), InternalsVisibleTo("BAL")]
这样,DAL和BAL将可以看到所有内部信息。这可能不是理想的,但我只是建议一种可能的解决方案。
关于c# - 属性私有(private)集;,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2366075/