gpt4 book ai didi

c# - 确保封装的建议

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:23 26 4
gpt4 key购买 nike

在我的解决方案中,我有一个 DLL 项目,比如 Project1,它拥有一个类,比如 class A。这个类有一些属性,非常重要,只能在这个 DLL 中设置。引用此 DLL 的任何其他项目只能使用 getter。到目前为止,我已经通过在内部访问 setter 来处理这种情况,例如:

public class A
{
int Num1
{
get;
internal set;
}

int Num2
{
get;
internal set;
}
}

现在我必须向解决方案添加另一个项目 Project2,该解决方案不仅必须使用 class A(getter 和 setter)而且 Project1 引用了这个新项目。所以我决定在不同的定义 dll 中将 class A 分开,放在层次结构的顶部。这就是重点,我的问题出现了。现在所有的 setter 对 Project1Project2 都是不可见的。如果我删除 internal 访问器,那么 setter 将可用于任何引用定义 dll 的程序集。我不想这样,因为 class A 上的信息非常重要,不能设置错误。

如何限制从Project1Project2 外部访问A 类 的setter?

我想到的唯一解决方案是使用 InternalsVisibleTo。我不知道,这听起来并不完美。将 Project1Project2 结合起来也是另一种解决方案,但这两者负责完全不同的任务,这不是设计上的最佳选择。

最佳答案

您可以保留内部保护程序,但让另一个程序集信任访问内部成员。

[assembly: InternalsVisibleTo("AssemblyName")]

您可以在类级别执行此操作,也可以根据需要在整个程序集本身执行此操作。

InternalsVisibleToAttribute Class

关于c# - 确保封装的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783888/

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