我是C#的新手,我在C ++中通常会使用friend
标识符来解决这个问题。现在,我知道该friend
关键字在C#中不存在,但是我没有解决此问题的经验(除了将所有类变量设为公共属性外,如果可以的话,我想避免使用该属性)。
我有以下情况:
public class A
{
public string Info { get; set; }
/* much more data */
}
public class B
{
private A m_instanceOfA;
public B(A a) { m_instanceOfA = a; }
public Info { get return A.info; set A.Info = value; }
/* And some more data of its own*/
}
public class C
{
private A m_instanceOfA;
// I need a constructor of C, which needs to set C.m_instanceOfA
// to the same value as b.m_instanceOfA.
public C(B b) { m_instanceOfA = b.m_instanceOfA ; } // <--- Not allowed!
/* And some more data of its own*/
}
还有其他任何不B.m_instanceOfA
公开的聪明方法来C
访问此变量(仅在构造函数中)吗?
您可以使用内部关键字。这样,您的类型(或类型成员)将仅对同一程序集中的其他类型可见。并且:
如果需要内部类型在其他程序集中可见,则可以使用InternalsVisibleToAttribute。此属性针对您的整个程序集,通常写在AssemblyInfo.cs文件中。
PS:C#中不存在Friend关键字,但是存在友谊的概念(与C ++中的概念并不完全相同),它在MSDN上的Friend Assemblies文章中进行了描述。还请注意,VB.NET中存在一个Friendly关键字,并且其行为与C#内部关键字完全相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句