如何使某些类只能访问一个类

时间:2014-02-08 19:59:33

标签: c# unity3d permissions

我想要做的是禁止SomeRandom类访问受保护的类

public class CertainClass {
    public void CerFunc(){
        ProtectedClass.ProtectedFunction();
    }
}
public class ProtectedClass {
    public static void ProtectedFunction(){
        Debug.Log("Protected");
    }
}
public class SomeRandomClass {
    public void RandFunc(){
        ProtectedClass.ProtectedFunction(); // innaccessible due to protection level
    }
}

为了使这项工作,我需要改变什么?

最好是静态,因为我需要并且只想要它。

1 个答案:

答案 0 :(得分:1)

将其设为 PrivClass的私有嵌套类

public class CertainClass
{
    private class ProtectedClass
    {
        public static void ProtectedFunction()
        {
            Debug.Log("Protected");
        }
    }
    public void CerFunc()
    {
        ProtectedClass.ProtectedFunction();
    }
}

<强>更新

如果您希望其他CertainClass2访问您的ProtectedClass成员 -

CertainClass2设为CertainClass的公共嵌套类。

OR

我建议将ProtectedClass和其他想要访问它的类转移到另一个程序集,并将ProtectedClass作为internal,以便所有类中的{{1}}程序集可以访问此类,并且对于此程序集外的其他类是不可见的。