C#自定义属性替代
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#自定义属性替代,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1425字,纯文字阅读大概需要3分钟。
内容图文
![C#自定义属性替代](/upload/InfoBanner/zyjiaocheng/670/b8a10ca3529d4af59e3c21553dfc33da.jpg)
目前,我已经创建了一个具有约30个属性的类.这样做是为了稍后建立URL请求(即“ http://www.domain.com/test.htm?var1=a&var2=b…&var30=dd”).
我面临的问题是属性名称不一定与查询变量名称匹配(这是有区别的).例如,我可能有一个名为“ BillAddress”的变量,而查询变量将需要为“ as_billaddress”.
我无法控制查询变量的命名方案,因为这些变量是在外部源上设置的.
我使用的一种可能的解决方案是创建一个自定义属性,并用它们各自的查询对应项装饰这些属性:
[CustomQueryAttribute("as_billaddress")]
string BillAddress{get;set;}
但是,要检索属性,需要进行一些反思,并且由于属性数量众多,我很好奇是否有一种更整洁的方法可以实现此功能.与其说是在没有反射的情况下设置/获取自定义属性,不如说是能够将备用字符串变量绑定到任何属性.
我还考虑过将每个变量设置为一种KeyValuePair,每个键代表对应的查询,但是我对此的理解并不为过.
总结/阐明我的上述背景知识,您将如何将字符串与属性(而不是属性的值)相关联?
与往常一样,任何评论都将不胜感激.
解决方法:
我可能会坚持使用自定义属性,但另一个可能的选择是做一些事情,例如持有具有字符串和属性信息(或属性名称)的静态Dictionary,这样您就可以直接通过此属性获取/设置属性.
就像是:
static Dictionary<string, PropertyInfo> propertyMap = new Dictionary<string, PropertyInfo>();
static MyClass()
{
Type myClass = typeof(MyClass);
// For each property you want to support:
propertyMap.Add("as_billaddress", MyClass.GetProperty("BillAddress"));
// ...
}
然后,您可以只进行字典查找,而不是在每个调用中使用反射.这也可以使用配置非常容易地设置,因此您可以在运行时重新配置映射.
内容总结
以上是互联网集市为您收集整理的C#自定义属性替代全部内容,希望文章能够帮你解决C#自定义属性替代所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。