如何解决从可见的基类访问不可访问的类
出于兴趣,我目前正在尝试掌握MS Workflow Foundation,尽管它似乎已经失去了支持。
一些类的内部工作原理深深扎根于Framework中,因此,如果您尝试构建自定义Workflow-Flow-Control类,并查看参考源,它们将引用仅对内部Microsoft实现可见的类。 。一个例子:
https://referencesource.microsoft.com/#System.Activities/System/Activities/NativeActivity.cs
是以您为基础并从中编写自定义实现的类。如果您进一步查看源代码:
https://referencesource.microsoft.com/#System.Activities/System/Activities/Statements/Flowchart.cs
这是Microsoft如何实现其活动“流程图”的参考示例。
有一行类似
this.variables = new ValidatingCollection<Variable>
可以在这里找到
此命名空间(或称谓结果?)具有可访问性约束,例如:
[assembly: InternalsVisibleTo("System.Activities,PublicKey=...")]
发现于:
https://referencesource.microsoft.com/#System.ServiceModel.Internals/AssemblyInfo.cs
所以我的问题是,如果您从一个类继承,那么在这种情况下,NativeActivity
在给定类ValidatingCollection
的允许的命名空间(或互补结果?)中,您是否应该以某种方式
是否也使用ValidatingCollection
之类的内部实现?谢谢=)
解决方法
所以我的问题是,在这种情况下,如果您从类继承 在允许的名称空间(或称谓)中找到的NativeActivity 结果?)对于给定的类ValidatingCollection,您是否以某种方式 应该也使用内部实现 是否正在验证Collection?
不,你不知道。首先,在ValidatingCollection
的公共API中不能使用NativeActivity.cs
,因为如果有的话程序集甚至不会编译。如果是这种情况,MS将收到“不一致的可访问性”编译时间错误。
因此,如果公共API中没有使用所述帮助程序类,则您要扩展(包括受保护的成员),为什么需要使用它?
ValidatingCollection
是您无需担心的实现细节。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。