在.NET的设计模式中,是否有一种很好的方法只允许某个类对另一个类中的属性具有读/写访问权限,而它们之间没有继承结构?
因此,如果某个类具有公共属性,则只有某个类可以看到这些属性?
如果在设计模式下不可能,那么在运行时。我知道在set和get语句中使用标志的方式,但我认为有更好的方法。
答案 0 :(得分:4)
C#中没有friend
访问权限。您有public
/ protected
/ internal
(包括[InternalsVisibleTo]
),但没有更精细(即在类型间级别)。所以,没有。
答案 1 :(得分:2)
您可以使用C#中的internal关键字实现此目的:
内部关键字是一种访问权限 类型和类型成员的修饰符。 内部类型或成员是 只能在文件中访问 相同的装配,如本例所示:
public class BaseClass { // Only accessible within the same assembly internal static int x = 0; }
答案 2 :(得分:0)
如果您将属性设为公开,则任何人都可以访问它们。如果你让它们成为内部的,受保护的,甚至是私人的 - 任何人仍然可以使用反射访问它们。如果您不鼓励使用它们,请使用像Mitch建议的内部。
如果存在此约束的安全原因,请使用Code Access Security保护您的媒体资源。请注意,这并不是一件容易的事情 - 必须考虑到您的安全模型和您公开的权限。还要意识到这必须在程序集级别完成,并且会影响应用程序的部署。
你可能不需要做那么深的事情。您可以通过将人们隐藏在显式实现的界面后面来“阻止”人们访问这些属性。