限制类属性对.NET中某些类的读/写访问

时间:2009-07-01 08:00:15

标签: c# .net

在.NET的设计模式中,是否有一种很好的方法只允许某个类对另一个类中的属性具有读/写访问权限,而它们之间没有继承结构?

因此,如果某个类具有公共属性,则只有某个类可以看到这些属性?

如果在设计模式下不可能,那么在运行时。我知道在set和get语句中使用标志的方式,但我认为有更好的方法。

3 个答案:

答案 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;
}

另请参阅:Practical usings of “internal” keyword in C#

答案 2 :(得分:0)

如果您将属性设为公开,则任何人都可以访问它们。如果你让它们成为内部的,受保护的,甚至是私人的 - 任何人仍然可以使用反射访问它们。如果您不鼓励使用它们,请使用像Mitch建议的内部

如果存在此约束的安全原因,请使用Code Access Security保护您的媒体资源。请注意,这并不是一件容易的事情 - 必须考虑到您的安全模型和您公开的权限。还要意识到这必须在程序集级别完成,并且会影响应用程序的部署。

你可能不需要做那么深的事情。您可以通过将人们隐藏在显式实现的界面后面来“阻止”人们访问这些属性。