类型设计

CLR 控制类型字段的结构:

[StructLayout(LayoutKind.Auto)]
internal struct SomeValType {
  private readonly Byte m_b;
  private readonly Int16 m_x;
}
LayoutKind.Explicit:显示的指定每个字段的位置 可以使用属性 System.Runtime.InteropServices.FieldOffsetAttribute 来标记字段的位置

友好程序集

当一个程序集被编译的时候,它可以通过定义在 System.Runtime.CompilerServices 命名空间的 InternalsVisibleTo 属性来标记友好的目标程序集。这个属性有一个字符串类型的参数来表示友好程序集的名称和公钥(传递的字符串不能包括 版本区域化信息或者处理架构),被标记为有好多程序集可以访问程序集所有的 internal type 和这些类型的internal 成员。

程序集A:

using System;
using System.Runtime.CompilerServices;  

[assembly:InternalsVisibleTo("Wintellect, PublicKey=12345678...90abcdef")]
[assembly:InternalsVisibleTo("Microsoft, PublicKey=b77a5c56...1934e089")]
internal sealed class SomeInternalType { ... }
internal sealed class AnotherInternalType { ... }

 

友好的程序集 Wintellect”:

using System;
internal sealed class Foo {
private static Object SomeMethod() {
// This "Wintellect" assembly accesses the other assembly's
// internal type as if it were a public type
SomeInternalType sit = new SomeInternalType();
return sit;
  }
}

 

posted @ 2016-04-19 11:18  GrayGuo  阅读(161)  评论(0编辑  收藏  举报