.NET小技巧(一)之InternalsVisibleToAttribute

大家都知道C#中访问权限有4个关键字(5种组合):

  • private(私有访问级别内部可以使用)
  • public(公开级别,无限制)
  • internal(程序集访问级别,同一程序集内可访问)
  • protected(保护级别,本类和子类可访问)
  • internal protected=protected internal(同程序集且在本类或子类)
  • 默认无修饰(对于类型等同internal,对于类型成员等同private)

  这里要特别提到的是internal关键字,初一看有点像C++的friend但又有不同。internal仅限同一程序集中也不能自定义给谁打开“方便之门”。

 


  在我们需要保护所写的类型或成员,但是我们的调用又不在同一程序集中那该怎么办?

 

  在.NET2.0开始,提供了[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = true, Inherited = false)]public sealed class System.Runtime.CompilerServices.InternalsVisibleToAttribute : Attribute 的特性。

我们只要在AssemblyInfo.cs中添加[assembly: InternalsVisibleTo("ConsoleApplication1 ,PublicKey= xxxxx")] 即可以再ConsoleApplication1中访问该程序集中internal 访问级别的类型和成员。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值