C#朋友类和OOP组合
给定包含原始数据集的类A和包含该数据的重新组织版本(GUI就绪)的类B,我想使A中的原始数据在B中可见。
显然,A类中的原始数据包含在私有成员中。 我想通过使用类似于C ++的朋友类方法的东西,使这些数据在B中可见。
我该如何处理?
谢谢。
严格地说,您无法定义可以向其公开数据的特定类(或类列表)。 但是,您可以使用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的方法是在A中提供一组公共方法,允许访问数据(或数据的子集),通常通过简单的属性。
根据您的结构,您可以使用部分类。 这意味着数据和UI实际上都在同一个类中,但是您将它们放在不同的文件中。
如果这对您不起作用,那么您可以使用内部作用域变量作为替代方法,或者使用UI以更通用的方式表示的数据集。
旧方法(双关语)将定义简单的getvalue()和setvalue()函数来返回该值,以便在不使用这些函数的情况下这些值将变得不可访问,在C#中这些函数是预定义的成员,称为属性。
class TestMethod{ private int Secret; get { return Secret;} set { Secret = value;} }
另一种方法是,正如其他人在我之前所说的那样,只需使用internal
修饰符。
上述就是C#学习教程:C#朋友类和OOP组合分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1031599.html