C#中保护方法的使用

guolianghu 2009-03-04 08:57:54
C#类里有一些保护函数,即protected类型的函数,由于我不是继承这个类做开发,而是使用这个类,查资料知这个保护方法有用。我想用它,而不是继承这个类后再用它。
如:
public class A
{
protected void B()
{
语句
}

}

public class B
{
B b=new B();
//这里能否通过某种技巧来用A类中的保护方法B?记得在某本书里看国,利用软件欺诈技术,我忘了。请赐教!
}
...全文
204 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
david_anwei 2009-03-04
  • 打赏
  • 举报
回复
不继承它理论上不能使用这个方法。
ginni215 2009-03-04
  • 打赏
  • 举报
回复
顶~~
bomdy 2009-03-04
  • 打赏
  • 举报
回复

MethodInfo minfo = typeof(A).GetMethod("B",
BindingFlags.Instance|
BindingFlags.Static|
BindingFlags.Public|
BindingFlags.NonPublic);

// 如果方法中没有访问类成员第一个参数可以用null
// 否则要创建一个A类的实例
object obj = null;

object[] args = new object[]{arg0, arg1, arg2}; // 如果方法B没有参数,参数数组args给null

// 调用
minfo.Invoke(obj, args);
北京的雾霾天 2009-03-04
  • 打赏
  • 举报
回复
受保护的方法就是为了子类使用的,你不继承它理论上不能使用这个方法。
deyter 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pbmlly 的回复:]
写一个中转类C,继承A,在中转类C中写一个public的方法D,在这个方法里调A类中B方法,然后在B类中实例化C,调用方法D.
[/Quote]
多搞个类,不过lz不要继承类A呢,那不直接由B继承A这样更方便?
请问下,这样两个方法有什么区别吗?
谢谢了!
pbmlly 2009-03-04
  • 打赏
  • 举报
回复
写一个中转类C,继承A,在中转类C中写一个public的方法D,在这个方法里调A类中B方法,然后在B类中实例化C,调用方法D.
typeof 2009-03-04
  • 打赏
  • 举报
回复
看看反射。
pztx1992 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shiboss 的回复:]
proctected不是只有本类和继承类才能访问吗
[/Quote]

对基类而言,在基类内部可以访问受保护的方法,在外部就只能由派生类访问,否则派生类意义何在?
tweeger 2009-03-04
  • 打赏
  • 举报
回复
使用反射技术就可以了。
shiboss 2009-03-04
  • 打赏
  • 举报
回复
proctected不是只有本类和继承类才能访问吗
wolf1118baby 2009-03-04
  • 打赏
  • 举报
回复
进来看看
HsWong 2009-03-04
  • 打赏
  • 举报
回复
那不是违反了对象的规则?还是重新派生一个类,提供public方法以访问protected方法,
然后用这个派生类进行开发
heyu1000 2009-03-04
  • 打赏
  • 举报
回复
好像不容易吧,帮顶一下

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧