社区
.NET Framework
帖子详情
不是很明白自定义属性
xrbeck
2005-12-28 09:04:15
关于自定义属性看了一下,是附加在类,或者方法上的一些自定义的东西,可以通过反射来得到属性值,但是这样的话,跟设计一个类的属性有什么区别,类也完全可以提供一些接口、属性来使得类本身有些定制的功能,为什么还要搞的那么复杂,用反射来解决?谢谢大家
...全文
218
19
打赏
收藏
不是很明白自定义属性
关于自定义属性看了一下,是附加在类,或者方法上的一些自定义的东西,可以通过反射来得到属性值,但是这样的话,跟设计一个类的属性有什么区别,类也完全可以提供一些接口、属性来使得类本身有些定制的功能,为什么还要搞的那么复杂,用反射来解决?谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xrbeck
2006-01-08
打赏
举报
回复
我顶。
Ivony
2006-01-05
打赏
举报
回复
一般来说还是很少用。
只要明白它是干什么的就好了,其实就是贴标签的,用于动态编程。
xrbeck
2006-01-04
打赏
举报
回复
是的,但是这个一般用contional比较合适,跟自定义没啥关系,另外“Obsolete"也不是不支持,只不过给个编译提示信息而已。
lidong6
2006-01-04
打赏
举报
回复
我一般在设置控件时用的比较多,比如某个属性要不要显示在属性栏里,默认值是什么,属于哪个分组.
xrbeck
2006-01-02
打赏
举报
回复
对,在某些类需要做些标志性的LOG的时候,属性比较方便,就好比NUNIT,在需要测试的方法前加个TEST即可,但不知道自己设计的一般场景有些什么。。我觉得要的确是比较有用的,而不是为了用而去用,就好比模式,滥用模式还不如不用模式,所以想问问大家一般都用在什么地方,可否举几个例子,谢谢
runrunrun
2006-01-01
打赏
举报
回复
to xrbeck(ALEK) : 我可以给你举个最简单的例子, .net 里提供了 Obsolete 属性用来标识一个类被废弃。如果没有这个属性,编译器不得不维护一个所有被废弃的类的列表,而且还无法处理用户自定义的废弃类。 现在有了这个属性,框架的作者如果觉得哪个类在下个版本中不再被支持,只要给这个类加上Obsolete属性就可以了
xrbeck
2005-12-31
打赏
举报
回复
第一位楼主的那个例子看了一下,觉得也没啥区别啊,第一种方式是以静态的方法提供,第二种是把这种SWITCH语句从静态方法中挪到ATTRIBUTE类中,不都一样?有啥区别?要改还不都得改?好像没有回答出attribute得真正优越的地方。。
我想第一个解耦可能是个比较特别的地方,的确,就好像NUNIT,要测试的方法只要定义个ATTRIBUTE即可,而测试跟类本身是没什么关系的。这个好像是个比较突出的地方。但是实际上还是可以通过引入一个测试的接口来实现。。
xrbeck
2005-12-31
打赏
举报
回复
“这个东西本来就不属于这个类,只是会影响到类的行为或者执行的方式,如果加到类中,就会造成混淆,耦合性就增强“ =》这个我觉得好像也不是很合理,同样的,我是在一个框架中,为某些上层的或者客户端程序调用,我以attribute的方式提供,代码在框架中,通过反射来得到一些指定的信息,然后做出一些处理,跟我在框架中定义一个接口,给上层使用有什么区别?更改都是在框架中,不涉及到应用。所以还是不大明白。。
xrbeck
2005-12-31
打赏
举报
回复
我觉得楼上的论据站不住脚, if( obj.GetType() == typeof(ClassA) ) ... 不友好,问题是要不要写?写了attribute就不用写这段了吗,一样的,只不过是在框架的某个类中写还是在attribute类中,而且都只写一次,我看不出有什么优越的地方。。
alesso
2005-12-31
打赏
举报
回复
楼主可以去看看“ASP.NET组件设计”这本书
runrunrun
2005-12-31
打赏
举报
回复
attribute 主要是给框架和类库使用的。当你自己设计一个类库时,你就会明白attribute的强大了。
打个比方说,你的类库里需要对 ClassA 和 ClassB 的对象做一些不同的处理, 你当然可以写死: if( obj.GetType() == typeof(ClassA) ) ... ,但这是一种很不好的方法。给不同类赋予Attribute无疑是一种好的解决方案
qwerttyy
2005-12-31
打赏
举报
回复
简单说来,类里属性是经常用的,Attribute是不经常用的,或者是特殊要求。这就是区别。
xrbeck
2005-12-31
打赏
举报
回复
还是不是很明白,比如设计了一个LOG attribute,
可以在需要的地方加上这个属性,从而可以把某些
地方自动加LOG,但是这样的话,我提供一个LOG类,
给客户端程序调用不就可以了吗,为啥要用attribute,
各位能不能举两个例子。。
ghchen
2005-12-30
打赏
举报
回复
这个东西本来就不属于这个类,只是会影响到类的行为或者执行的方式,如果加到类中,就会造成混淆,耦合性就增强
alesso
2005-12-30
打赏
举报
回复
Attribute就相当于用不干胶给类或者method贴个标签,让底层框架或者VS设计器来读取信息
而且贴这个Attribute不影响类或method本身
alesso
2005-12-30
打赏
举报
回复
就好比一台电视机的控制器
每个按钮实现一些功能,好比method或者property
但如果电视机要包含“维修电话”这个信息
你是希望设计成一个按钮,按一下把电话号码显示在荧光屏上
还是直接用不干胶在电视机上贴个标签?
aspczlover
2005-12-30
打赏
举报
回复
不要搞那么多理论 要考虑实用性
timiil
2005-12-29
打赏
举报
回复
Attribute好比标签,通过反射获取对象上的标签,可以实现某些特定的功能,并且保持较低的耦合性
机器人
2005-12-28
打赏
举报
回复
property称之为属性,Attribute称之为特性。我们通过自定义特性可以扩展元数据。
http://blog.csdn.net/fangxinggood/archive/2005/10/30/519547.aspx
Android
自定义
日期选择器源码
配套博客地址:http://blog.csdn.net/wwj_748/article/details/38778631
自定义
圆形进度条
自定义
的圆形进度条,很好看到哦,亲!
Microsoft.Office.Core.dll
自己进行office插件开发时用到了,与大家共享下。
css html
自定义
属性
,是时候开始用 CSS
自定义
属性
了
自定义
属性
(有时候也被称作CSS变量或者级联变量)是由CSS作者定义的,它包含的值可以在整个文档中重复使用。由
自定义
属性
标记设定值(比如: --main-color: black;),由var() 函数来获取值(比如: color: var(--main-color);)复杂的网站都会有大量的CSS代码,通常也会有许多重复的值。举个例子,同样一个颜色值可能在成千上百个地方被使用到,如果这个值发生了...
Android 深入理解Android中的
自定义
属性
1、引言 对于
自定义
属性
,大家肯定都不陌生,遵循以下几步,就可以实现:
自定义
一个CustomView(extends View )类 编写values/attrs.xml,在其中编写styleable和item等标签元素 在布局文件中CustomView使用
自定义
的
属性
(注意namespace) 在CustomView的构造方法中通过TypedArray获取 ps:如果你对上
.NET Framework
17,748
社区成员
24,327
社区内容
发帖
与我相关
我的任务
.NET Framework
.NET技术 .NET Framework
复制链接
扫一扫
分享
社区描述
.NET技术 .NET Framework
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章