在.NET中如何为一个Field增加Attribute?

天堂里的死神 2010-03-21 01:25:56
我在我的C#程序中使用了一个CLR的外部库,外部库里有个类是这样的:
public value class SubSetInfo
{
public:
UINT PrimType;
UINT VertexStart;
UINT IndexStart;
UINT PrimCount;
};
由于无法修改这个CLR库的代码,而我的程序里,在一些关键问题上使用了Class和Field的Custom Attribute机制,因此我在C#里面想为这个类和这个类下面的4个Field分别添加一些Attribute。
类我用的是TypeDescriptor:
TypeDescriptor.AddAttributes(typeof(GCRenderFunctional.SubSetInfo), new AutoSerialClassAttribute());

但是对于下面的四个Field该怎么增加一些新的Attribute呢?
如果不能增加,那么还有什么好点的方法可以实现这个目的么?
...全文
271 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
天堂里的死神 2010-03-28
  • 打赏
  • 举报
回复
呵呵,Sorry,多谢批评,我们公司不是专门用.NET的公司,口头上都这么叫,我也就脱口而出了。
TypeDescriptor还是很强大的啊。
就此结贴吧,需求算是满足了。
  • 打赏
  • 举报
回复
呵呵,“CLR代码”!

c++就c++呗,连大的名词(属于哪一个语言编译器)都搞错了,小的名词就肯定让人误会了。
天堂里的死神 2010-03-28
  • 打赏
  • 举报
回复
最后没办法了,自己用string做了一套类似Attribute的机制,虽然麻烦但是好在解决问题了。
TypeDescriptor.AddAttributes(
typeof(GCRenderFunctional.SubSetInfo),
new AutoSerialClassAttribute (
new string[]
{
"PrimType",
"VertexStart",
"IndexStart",
"PrimCount"
}
)
);
解析的时候也用TypeDescriptor反解

AttributeCollection ac = TypeDescriptor.GetAttributes(type);
AutoSerialClassAttribute asc = null;
foreach (Attribute att in ac)
{
asc = att as AutoSerialClassAttribute;
if (asc != null)
{
return asc;
}
}
return null;
xingyuebuyu 2010-03-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 noslopforever 的回复:]
唉,您说的方法我想到了,但就是不想这样做才想问问有什么好办法没呢。

BTW:那是CLR代码……value class等同于C#中的struct
ref class等同于C#中的class
[/Quote]

struct不能继承啊,class还是继承来的好些.
Joe-xXx 2010-03-21
  • 打赏
  • 举报
回复
学习了~~
十八道胡同 2010-03-21
  • 打赏
  • 举报
回复
反射貌似不能修改原来的定义吧
天堂里的死神 2010-03-21
  • 打赏
  • 举报
回复
唉,您说的方法我想到了,但就是不想这样做才想问问有什么好办法没呢。

BTW:那是CLR代码……value class等同于C#中的struct
ref class等同于C#中的class
qldsrx 2010-03-21
  • 打赏
  • 举报
回复
你写一个类,继承SubSetInfo,然后里面添加自己需要的一些属性即可。

PS:我从未见过class关键字前面可以用value修饰的写法,你真有创意。
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 Altium Designer 18是一款功能丰富的电子设计自动化工具,其集成了电路原理图绘制、PCB布局规划、三维视图展示、电路仿真分析以及生产文件生成等多项核心功能,为电子工程师们提供了一个全面的硬件设计解决方案。该软件的官方文指导材料系统地阐述了从项目初始阶段到最终完成的全过程操作方法。 在“AD18 官方文指导材料”,使用者可以掌握以下核心内容要点: 1. **系统配置与界面认知**:熟悉Altium Designer 18的工作平台,涵盖菜单选项、工具栏配置、工作区域安排,以及个性化工作界面的设定方法。 2. **项目创建流程**:掌握如何建立新的项目工程,包括工程参数配置、项目模板选取,以及项目文件的添加操作。 3. **电路图绘制技术**:学习电路原理图的绘制流程,包括元件库的维护管理、元件放置技巧、连接线路绘制、属性编辑操作,以及网络表的自动生成方法。 4. **元件库构建与管理**:了解如何建立自定义元件库,执行元件的导入与导出任务,以及利用Altium Designer自带的元件资源库。 5. **PCB布局设计方法**:掌握PCB设计的基本准则,如元件布局策略、布线技巧、层叠结构调整、布线规则优化,以及冲突检测与短路处理技术。 6. **设计规范与约束条件**:理解设定设计规范和电气约束条件的关键性,包括间距参数设定、焊盘尺寸规格、过孔尺寸要求等,以及运用规则检查进行设计验证的流程。 7. **三维模型整合应用**:学习如何将三维模型与PCB设计内容相结合,以实现更为直观的机械配合验证。 8. **电路性能仿真技术**:掌握使用Altium Des...

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧