有没有什么有意义的使用方法
public void SetCustomAttribute(
ConstructorInfo con,
byte[] binaryAttribute
)
Run Code Online (Sandbox Code Playgroud)
来自AssemblyBuilder.SetCustomAttribute
澄清:有意义的,我的意思是你想要用什么样的数据来填充该数组?它有什么作用?
有没有像我可以二进制格式化程序序列化现有属性并传递它的数据?
因为属性存储是一门神奇的科学.它们总是使用编码的二进制格式存储,在这种情况下,它只是为您提供对属性的二进制内容的原始写入访问.很大程度上,这将由实现自己的编译器的人使用,或者试图尽可能地扼杀每一点性能.你不能只在那里放任何你喜欢的东西,你应该遵循CLI的规范.
例如,必须对属性中构造函数参数的值进行编码.以下面的属性为例:
internal class MyAttribute : Attribute
{
public string Foo;
}
Run Code Online (Sandbox Code Playgroud)
如果我们将它应用于[MyAttribute(Foo = "4")]令牌,它必须序列化:
所以它被编译成这样的东西:
.custom instance void Dummy.MyAttribute::.ctor() = ( 01 00 01 00 53 0E 03 46 6F 6F 01 34 )
Run Code Online (Sandbox Code Playgroud)
这些值意味着:
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |