调用者-C#中有没有办法做到类的成员方法只对特定对象公开?或者用其他机制来实现成员方法只能被特定对象调用

问题描述

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

调用者-C#中有没有办法做到类的成员方法只对特定对象公开?或者用其他机制来实现成员方法只能被特定对象调用的相关文章

jsp-Struts中有没有办法在渲染每个UI控件时都执行一段代码

问题描述 Struts中有没有办法在渲染每个UI控件时都执行一段代码 我有这么个需求:希望能通过数据库配置来指定每个页面上的每个UI控件是否最终显示出来.表结构例如: page | component_id | is_display 有什么办法能够加个拦截器之类的东西,在Struts渲染每个UI控件之前能执行这个拦截器,在拦截器里能取到当前被渲染的控件对象,并修改控件对象的属性吗? 我只知道Struts有Interceptor,但貌似只是拦截后台Action的,不知道是不是能处理UI控件. 请各

c++-如果类中有多个同一个类的多个对象成员,如何初始化。

问题描述 如果类中有多个同一个类的多个对象成员,如何初始化. 如果类中有多个同一个类的多个对象成员,如何初始化. 类名:构造函数名(形参):对象1(参数表),对象2(参数表)... 解决方案 就是像你写的那样初始化,也可以写在构造函数里. 解决方案二: 就是通过构造函数 或者放到一个数组中循环初始化 解决方案三: 1.普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值.考虑一下效率的可以再构造函数的初始化列表中进行. 2.static 静态变量: static变量属于类所有,而不属于

初学者的忧伤-用js获取电脑硬件信息,在火狐以及谷歌浏览器中有没有办法

问题描述 用js获取电脑硬件信息,在火狐以及谷歌浏览器中有没有办法 我想请教下在ie中可以用ActiveX来获取硬件信息,那么在火狐谷歌浏览器中如何获取用户的硬件信息.只能写浏览器插件吗?真的没有其他办法了么? 解决方案 Firefox,Chrome也都有插件, Firefox有js-ctype等,插件,然后调用到c++代码等来获取本地信息 Chrome用NPAPI来执行一个本地程序获取硬件信息

为什么java源文件中有两个类编译后只产生一个类文件

问题描述 classdemoA{publicstaticvoidmain(String[]args){demoad=newdemoa();d.getmoney();}voidgetmoney(){System.out.println("package123123123");}}classdemoa{voidgetmoney(){System.out.println("package1111");}}为什么java源文件中有两个类编译后只产生一个类文件demoA,且运

ruby中有没有获取指定类中所有方法名的方法?

问题描述 请问ruby中有没有获取指定类中所有方法名的方法?类似,php中 get_class_methods的方法我想去遍历执行一个指定类中的所有方法...  问题补充:例<br />class Test<br />  def a<br />  end<br /><br />  def b<br />  end<br /><br />  def c<br />  end<br />en

java-抽象类 子类实现相同方法 想想去执行抽象类中的方法,在从抽象类中调用子类具体方法

问题描述 java-抽象类 子类实现相同方法 想想去执行抽象类中的方法,在从抽象类中调用子类具体方法 如下代码,想得到这样结果execute AA before execute..C execute AA after 应该怎么处理 public class Test { public static void main(String[] args) { C c = new C(); c.A(); } } interface YY { public void A(); } abstract clas

java static-假设有一个类,我只对这个类的引用做一个声明,那么这个类中的static方法会被初始化吗

问题描述 假设有一个类,我只对这个类的引用做一个声明,那么这个类中的static方法会被初始化吗 假设下面这种情况,test1中的do方法会被初始化吗? public class test{ public static void main(string []args){ test1 t: } } class test1{ int i: static void do(){} } 解决方案 第一次访问的含义是,访问了这个静态类中的任何方法.属性.字段,那么所有的属性都会被初始化. 解决方案二: 方法

有什么办法能让英文网页的文字左右都对齐?现在的情况是要么只能左对齐,要么只能右对齐,求大神帮忙

问题描述 有什么办法能让英文网页的文字左右都对齐?现在的情况是要么只能左对齐,要么只能右对齐,求大神帮忙 解决方案 http://blog.163.com/lgh_2002/blog/static/44017526201357114023638/ 解决方案二: 这个没有试过,如果你非得要这个效果可以用Div+css来弄的:或者你可以控制一下字符间距来减缓一下,使它看上去像两边对齐.

chart控件ToolTip显示DataTime类型值是只显示了日期,没有显示时间

问题描述 给位前辈大家好!我是个新手,遇到个问题希望大家帮帮忙,在此感激不尽!问题是这样的:我从数据库读取数据,填充一个DataTable的对象table,然后把table作为一个chart控件的数据源画出了折线图,现在想让鼠标移动到绘图区的曲线上后显示当前点的X,Y坐标,用的是下面这个方法:chart1->Series[0]>ToolTip="#VALX,#VALY";由于我的X坐标是一个DataTime类型数据,当鼠标移动到series[0]上时显示了X,Y值,但是X值