博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何让 protected internal 跨程序集!
阅读量:6913 次
发布时间:2019-06-27

本文共 967 字,大约阅读时间需要 3 分钟。

项目A(ClassLibrary1):

有一个类:

C# code
 
namespace
ClassLibrary1 {
public
abstract
class
HelloBase {
protected
internal
abstract
void
SayHello(); } }

注意 SayHello 的访问修饰符:protected internal abstract。
这个原意可能有两个版本:
1、允许 ClassLibrary1 程序集访问 HelloBase.SayHello 或者让派生类(其他程序集)访问(靠谱)。
2、允许 ClassLibrary1 程序集以及所派生的程序集进行访问(显然不靠谱)。
是的,我在其他程序集引用了 ClassLibrary1 并继承 HelloBase
通过 VS 2010 的快捷方式,我得到了:

 
C# code
 
public
class
HelloClass : ClassLibrary1.HelloBase {
protected
override
void
SayHello() { Console.WriteLine(
"
Hello
"
); } }

显然这是没错的。可是,为什么我在研究别人的源码时,发现已编译的程序集竟然存在:

 
C# code
 
public
class
HelloClass : ClassLibrary1.HelloBase {
protected
internal
override
void
SayHello() { Console.WriteLine(
"
Hello
"
); } }

那么,我该如何让它编译成功?(应该是有办法的?)
VS2010 的错误提示如下:
错误
“ConsoleTest.HelloClass.SayHello()”: 当重写“protected”继承成员“ClassLibrary1.HelloBase.SayHello()”时,无法更改访问修饰符

我直接上图:

---------------------
抽象类:
r_%e7%88%b6%e7%b1%bb.bmp
---------------------
派生类:
r_%e6%b4%be%e7%94%9f%e7%b1%bb.bmp

 

转载于:https://www.cnblogs.com/sofire/archive/2011/01/19/1939216.html

你可能感兴趣的文章
home.pl 正在促销,一些域名免费(终止于2017.4.4)
查看>>
python、js 时间日期模块time
查看>>
Loadrunner监控Centos
查看>>
转:问题解决:The project cannot be built until build path errors are resolved
查看>>
Python--day25--面向对象之多态
查看>>
submit
查看>>
数据结构-----树状数组
查看>>
mac终端下svn常用命令
查看>>
C++的lambda表达式
查看>>
新手学习python(十六)封装redis
查看>>
vue移动端弹框组件
查看>>
vuex
查看>>
vux 全局使用 loading / toast / alert
查看>>
面向对象数组操作
查看>>
Cocos2d-x之内存管理
查看>>
Sharepoint 列表分页开发
查看>>
当页面是本地页面时,通过ajax访问tomcat里的action,传递的参数在action里并不能识别...
查看>>
RocketMQ Java 客户端实现
查看>>
hdu 1133 Buy the Ticket (大数+递推)
查看>>
java:Java里数字转字符串前面自动补0的实现
查看>>