在校内论坛回一篇帖子,唧唧歪歪了这么多,呵呵。
基于属性编程其实很简单,原理就是给类以及类的成员附着一些东西,这些东西人称元信息。这个名词的出现应该也是由于计算机界好发明buzz word的结果。当然你也可以辩称是由meta一词引申而来,但是无所谓,我看见的就是有人因为名词而迷惑。
这份元信息,在.net中的名字是attribute,在java中的名字叫annonation,其实是差不多的东西。具体的做法就是用[]或者@标记一下类或者类成员。[]中的是像MyAttribute(x,y)这样的东西,其实和new MyAttribute(x,y)是一样的。结果就是把一个instance附着到了一个类上面。因为.net和java的类是动态存在的,用术语说是能够自省的。所以可以通过reflect得到这个类上面附着的attribute的内容和类型。
这样带来的好处是描述一个类或者一个类成员除了本身的接口,本身的type,本身的一些结构上的信息之外,你还能给他更多的描述。这样的描述怎么用,就可以充分发挥想象力的了。
目前主要的一些用法是像这样的[WithTransaction],然后事务处理就会添加上。基本上是说用属性来“要”一些服务。但是这样作是不好的。推荐的做法是用属性来描述你的类或者类成员是干什么的,而不是你要什么。不过由于目前技术的发展的一些限制,这样用attribute来表示要什么的阶段还会存在很长一段时间。
最重要的是不要把基于属性编程看作什么新东西。从前你用全局变量,然后程序根据全局变量的值来改变行为。后来你用静态变量,后来你用配置文件,后来你用xml配置文件。现在只不过让你存放这种信息多了一个场所——类本身。这个就是属性带来的。可以说属性能够作的,其他的办法也能作,只不过由于属性和类是贴身的关系,带来了其不可替代的优势。具体说这种贴身的关系就是在xml中
<class name="..">
<myattribute>..</myattribute>
</class>
你必须额外用一些字段来关联你定义的属性和类。但是用了语言自身提供的属性,这种绑定就是天然的,内省的。这个也就是属性最大的价值和力量的源泉。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架