问题描述
- C#中有没有办法做到类的成员方法只对特定对象公开?或者用其他机制来实现成员方法只能被特定对象调用
-
问题是这样的:
有两个类 A 和 B,B类有一个成员是A类的对象(记为a),B类还有两个成员方法 bf1 和 bf2,现在需要方法 bf1 完全公开,而bf2只有a对象的方法能调用。能不能用什么办法做到这一点?比如在bf2方法里面增加一个判断调用者的语句,如果调用者不是a对象,就直接返回不执行。
木有悬赏分了,不知道会不会有人回答 ToT
解决方案
用 is关键字判断 if(a is A)
解决方案二:
加protected修饰符
解决方案三:
如果a对象能够调用bf2的话,那A必须为B的子类才行呀。
解决方案四:
回复楼上
1、不是判断类型的问题,是要让一个方法只能让特定对象调用,
2、如果protected了,A类就没法调用到这个方法了
解决方案五:
回复3楼
3、更正一下,是“a对象的方法能够调用bf2”
顺便问一下这里怎么回复特定楼层!!
解决方案六:
如果用 System.Diagnostics.StackTrace 的话只能判断调用者的类型,而无法分辨具体的对象,泪奔ING
解决方案七:
上转型对象的成员变量和成员方法的调用
时间: 2024-10-15 21:36:31