C# AssemblyBuilder.SetCustomAttribute中字节数组的用途是什么
有什么有意义的方法可以使用吗C# AssemblyBuilder.SetCustomAttribute中字节数组的用途是什么,c#,C#,有什么有意义的方法可以使用吗 public void SetCustomAttribute( ConstructorInfo con, byte[] binaryAttribute ) 从 澄清:我所说的有意义,是指您希望用什么样的数据填充该数组?它和它有什么关系 有什么东西可以让二进制格式化程序序列化现有属性并将数据传递给它吗?因为属性存储是一门神奇的科学。它们总是使用编码的二进制格式进行存储,在这种情况下,它只是为您提供对属性的二进制内容的原始写访问权。在很大程度上,这将被
public void SetCustomAttribute(
ConstructorInfo con,
byte[] binaryAttribute
)
从
澄清:我所说的有意义,是指您希望用什么样的数据填充该数组?它和它有什么关系
有什么东西可以让二进制格式化程序序列化现有属性并将数据传递给它吗?因为属性存储是一门神奇的科学。它们总是使用编码的二进制格式进行存储,在这种情况下,它只是为您提供对属性的二进制内容的原始写访问权。在很大程度上,这将被实现自己的编译器的人使用,或者试图尽可能地提高每一点性能。您不能将任何您想要的东西放在其中,您需要遵循CLI的规范 例如,属性中构造函数参数的值必须进行编码。以以下属性为例:
internal class MyAttribute : Attribute
{
public string Foo;
}
如果我们将它与类似于[MyAttribute(Foo=“4”)]
的内容一起应用于令牌,它必须序列化:
- 正在初始化的成员
- 正在初始化的成员类型(字段或属性)
- 属性是否被继承
- 价值
- 等等
.custom instance void Dummy.MyAttribute::.ctor() = ( 01 00 01 00 53 0E 03 46 6F 6F 01 34 )
这些值意味着:
它将允许预编译属性,只需将属性压缩到二进制文件中,而无需经过构建器。编码记录在“MS分区II”第23.3节中,可下载@
re:有没有办法从
AncustomAttributeProvider.GetCustomAttributes获取此二进制数据(..
调用以便我可以使用它克隆属性并将其放置在另一个成员中?@chrismaric我看不到获得直接二进制表示的方法。GetCustomAttributesData
是最接近的方法。或者说可以做到这一点。通常,.NET Framework本身很擅长生成低级别的片段,但不适合因此,塞西尔和CCI的存在。