给定的类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改性剂。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top