C#朋友类和OOP组成
-
24-09-2019 - |
题
给定的类A,它包含原始数据集的,和B类,其中包含的数据,我想使B在A中可见的原始数据的重新组织版本(GUI准备好)。
显然,在类A中的原始数据被包含在私有成员。我想使B中的数据可见,虽然使用一个类似于C ++的朋友类方法。
如何处理这个?
感谢您。
解决方案
严格地说,不能定义一个特定的类(或类列表),其可以将数据暴露于。你可以,但是,使用internal
访问修饰符代替private
,这使得可用的成员的任何类在同一组件。
这就是说,你应该的强烈的考虑,通过曝光这些特性的成员,而不是场(这是我猜你揭露打算)。这样做将允许类定义信息究竟是如何被暴露给其他类和什么 - 如果有的话 - 当其他类改变数据应该发生
其他提示
可能是这可能会帮助你..
public class A
{
public A() { }
public string AccessData(object accessor)
{
if (accessor is B)
return "private_data";
else
throw new UnauthorizedAccessException();
}
}
public class B
{
public B() { }
private void AccessDataFromA()
{
Console.WriteLine(new A().AccessData(this));
}
}
您可以在一个组件同时定义并标记在A中的字段“内部”。
一个更OO方法是提供一组所述的公共方法,允许对数据的访问(或数据的子集),通常通过简单属性。
根据您的结构,你可以使用部分类。这意味着,数据和用户界面实际上都是同一个类中,但你有他们不同的文件中。
如果是不适合你的工作,那么你已经有了内部范围的变量作为替代或工作与数据集的UI代表了一个更通用的方式。
旧方法(双关语意)是定义简单的的GetValue()和的setValue()的函数来返回该值使得这些值将不变得不可访问使用这些函数,在C#这些函数是预定义成员称为属性。
class TestMethod{
private int Secret;
get { return Secret;}
set { Secret = value;}
}
在另一种方法是,如其他人我前面所述,只是使用internal
改性剂。
不隶属于 StackOverflow