是否有任何有意义的使用方法
public void SetCustomAttribute(
ConstructorInfo con,
byte[] binaryAttribute
)
来自AssemblyBuilder.SetCustomAttribute
澄清:有意义的,我的意思是你想要用什么样的数据填充该数组?它有什么作用?
是否有类似我可以二进制格式化程序序列化现有属性并将其传递给该数据?
答案 0 :(得分:5)
因为属性存储是一门神奇的科学。它们总是使用编码的二进制格式存储,在这种情况下,它只是为您提供对属性的二进制内容的原始写入访问。很大程度上,这将由实现自己的编译器的人使用,或者试图尽可能地扼杀每一点性能。你不能只在那里放任何你喜欢的东西,你应该遵循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 )
这些值意味着:
答案 1 :(得分:2)
编码记录在“MS Partition II”第23.3节中,可以在@
下载re:http://msdn.microsoft.com/en-us/netframework/Aa569283.aspx
答案 2 :(得分:1)
它允许预编译属性,只需 geschmack 将它们放入二进制文件中,而不是通过构建器。