c# - 如何将 ByteSerialize 属性/长度分配为变量
问题描述
我正在创建具有不同类型和长度的模型,这些模型用作对 API 的请求/响应。
[ByteSerialize(1)]
public string ByteLength { get; set; }
[ByteSerialize()]
public string Byte { get; set; }
我想首先获取来自 API 的 ByteLength,然后将其传递给 [ByteSerialize(?)]
解决方案
属性是惰性的——没有神奇的方法可以让事情自动发生。此外,属性通常仅被视为 IL 中的元数据,因此:它们的参数必须表示为常量,而不是运行时值。显然,如果您只将属性创建为对象,而不是元数据,那么情况就会发生变化:您的示例显示了元数据。
要做你想做的事,你可以手动做,即有一些方法on ByteSerializeAttribute
,当你的代码检测到(通过PropertyInfo
)属性存在时,使用类似的东西:
var value = property.GetValue(obj);
attrib.SomeMethod(obj, value); // or whatever you need
推荐阅读
- python - Python - 如何在导入失败时显示有用的错误
- java - 在javaFX中的gridPane单元格内随机显示圆圈
- spring-boot - Spring Boot 应用启动问题 | 未加载端点
- kubernetes - Kubernetes CronJob 未正确使用 Docker Secret
- swift - OS X 崩溃:未分配被释放的指针
- database - 包含尚未注册的用户电子邮件的表格?
- javascript - javascript 警报显示插入字符串的代码
- ios - 如何在 UIView 中正确定义 CAAnimation 重复计数?
- encryption - 寻找弱加密密钥
- azure - Microsoft.Azure.Devices.Client.Exceptions.UnauthorizedException:“连接失败:拒绝未授权”