c# - 将类型作为参数传递给属性

标签 c# generics custom-attributes

我写了一个有点通用的反序列化机制,允许我从 C++ 应用程序使用的二进制文件格式构造对象。

为了保持整洁和易于更改,我制作了一个扩展 AttributeField 类,由 Field(int offset, string type, int length, int padding) 并应用于我希望反序列化的类属性。这是它的样子:

[Field(0x04, "int")]
public int ID = 0;

[Field(0x08, "string", 0x48)]
public string Name = "0";

[Field(0x6C, "byte", 3)]
public byte[] Color = { 0, 0, 0 };

[Field(0x70, "int")]
public int BackgroundSoundEffect = 0;

[Field(0x74, "byte", 3)]
public byte[] BackgroundColor = { 0, 0, 0 };

[Field(0x78, "byte", 3)]
public byte[] BackgroundLightPower = { 0, 0, 0 };

[Field(0x7C, "float", 3)]
public float[] BackgroundLightAngle = { 0.0f, 0.0f, 0.0f };

然后调用 myClass.Decompile(pathToBinaryFile) 将从文件中提取数据,在适当的偏移处读取适当的类型和大小。

但是,我发现将类型名称作为字符串传递很丑陋。

是否有可能以更优雅但更简短的方式传递类型,如何传递?

谢谢。

最佳答案

使用 typeof 运算符(返回 Type 的实例):

[Field(0x7C, typeof(float), 3)]

关于c# - 将类型作为参数传递给属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830044/

相关文章:

c# - FakeItEasy 伪造带有构造函数中参数的自定义属性的抽象类抛出 ArgumentException

c# - 读取类型和成员的自定义属性声明

c# - 使用 View 的 MySQL 数据库报告

c# - 我是否错误地使用了依赖属性?

java - 调用泛型类型

c# - 列表的多态性

c# - 使用属性向方法添加参数

c# - 尝试从 gitpod IDE(ubuntu 服务器)连接到 MySql 数据库时出现套接字异常

c# - 具有未分配的变量参数的 linq

java - 转换为泛型方法后,getall 函数不起作用