- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我还没有真正找到答案,所以我很好奇这样的事情是否可能。假设我有一个 DataClass
它保存着程序的各种数据。像这样的东西,例如:
public class DataClass
{
int Data_One;
int Data_Two;
int Data_Three;
public int GetOne();
public int GetTwo();
public int GetThree();
public void SetOne();
public void SetTwo();
public void SetThree();
}
现在,假设我还有另外两个类(class),类(class)A
和类 B
, 两者都被实例化一次,并且两个实例都可以访问 DataClass
的同一个实例.但是,如果我希望这两个类对 DataClass
具有不同类型的访问权限怎么办? ? 假设我想要 A
能够阅读 Data_One
, 和 Data_Two
, 但只设置 Data_One
, 并且无权访问 Data_Three
,而我想要类 B
能够读取和设置 Data_Three
和 Data_Two
, 但无权访问 Data_One
.这可以通过某种方式实现吗?如果可以,最方便的方式是什么?
进一步详细说明:在我的示例中,有 2 个类,但我正在寻找的是适用于任意数量类的通用解决方案,它允许我明确定义每个类可以访问哪些方法,而不管有多少其他类可以访问相同的方法。有点像有一个“访问表”,其中包含每个类可以访问哪些方法。我希望这是可维护的,因此更改可访问性权限不会很麻烦。
最真实的情况是有一个类,专门设置数据,其他一些类,可能只读取数据,其余的没有访问它。所有这一切都无需在类之间使用引用,而是使用“中央”数据对象。
我想到的一个想法是对 DataClass
中的调用者进行类型检查对于每个方法,并确定该类型是否可以访问该方法。最理想的情况是,如果 DataClass
会有某种 Access
方法,它返回一个对象或容器类型,并引用可访问的方法,尽管这对我来说听起来太过分了。
最佳答案
使用接口(interface)。你可以拥有
interface ICanBeUsedOnlyByA {
int Data_One { get; set; }
}
interface ICanBeUsedOnlyByB {
int Data_Two { get; set; }
}
class DataClass : ICanBeUsedOnlyByA, ICanBeUsedOnlyByB {
}
然后你有
class A {
public ICanBeUsedOnlyByA A { get; set; }
public A (ICanBeUsedOnlyByA a){
A = a;
}
}
class B {
public ICanBeUsedOnlyByA B { get; set; }
public B (ICanBeUsedOnlyByB b){
B = b;
}
}
然后 A
将只能访问 int Data_One;
和 B
到 int Data_Two;
我建议您阅读有关接口(interface)和抽象类的内容。
关于c# - 有没有办法控制哪些类可以访问类中的某些方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40611962/
我是一名优秀的程序员,十分优秀!