能否让指定的类访问私有成员?

he717 2009-09-18 08:44:56
我有两个类,A和B。我只想让A访问B的某些成员,但并不想让其他人访问B的那些成员。如果声明为public,那就公开了。如果是private,那A也访问不了。记得c++里有friend,但c#里没有。请高手指教
...全文
153 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
he717 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cstod 的回复:]
C# codeclass A
{publicstaticvoid Call()
{
B.OnlyA();
}
}class B
{publicstaticvoid OnlyA()
{
System.Diagnostics.StackFrame sf=new StackFrame(1);if (sf.GetMethod().DeclaringT¡­
[/Quote]

这样还是可以让其他的类看到B.OnlyA,虽然不能访问。不知道有没有办法可以让其他类看不到OnlyA。不过,还是感谢大侠,给分。
CsToD 2009-09-18
  • 打赏
  • 举报
回复
8楼已经解决了,为什么不结贴?
[路在脚下] 2009-09-18
  • 打赏
  • 举报
回复
让A派生于B,设B的成员为Protected(只允许派生类访问)
风之影子 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zxkid 的回复:]
将A和B放在同一文件中,然后用internal修饰指定的变量
[/Quote]

你的意思放在同一目录下,或是生成一个程序集.外部调用
风之影子 2009-09-18
  • 打赏
  • 举报
回复
我有两个类,A和B。我只想让A访问B的某些成员,但并不想让其他人访问B的那些成员。如果声明为public,那就公开了。如果是private,那A也访问不了。

既然C#取消了这一特性.好多资料的原因是与OOP违背.



关注此贴

顶起来
zxkid 2009-09-18
  • 打赏
  • 举报
回复
将A和B放在同一文件中,然后用internal修饰指定的变量
he717 2009-09-18
  • 打赏
  • 举报
回复
我是说平级的,嵌套类型好像不是平级的。
CsToD 2009-09-18
  • 打赏
  • 举报
回复
class A
{
public static void Call()
{
B.OnlyA();
}
}
class B
{
public static void OnlyA()
{
System.Diagnostics.StackFrame sf = new StackFrame(1);
if (sf.GetMethod().DeclaringType == typeof(A))
MessageBox.Show("OK,You are A");
}
}
ViewStates 2009-09-18
  • 打赏
  • 举报
回复
A是B的NESTED CLASS
he717 2009-09-18
  • 打赏
  • 举报
回复
或者说,能否判断是谁调用了B的方法。如果不是A,那就不执行也可以。
he717 2009-09-18
  • 打赏
  • 举报
回复
但用反射,那其他人也可以反射。我的意图是要把B的成员保护起来,只让A来用。。。
coconutyf 2009-09-18
  • 打赏
  • 举报
回复
用反射可以访问。
jiezi316 2009-09-18
  • 打赏
  • 举报
回复
UP 了
he717 2009-09-18
  • 打赏
  • 举报
回复
抱歉,我是说两个平级的类。
风之影子 2009-09-18
  • 打赏
  • 举报
回复
类a继承类b

111,092

社区成员

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

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

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