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; } }