属性索引

手头上的这个项目有一个比较少见的需求,最少,对于我来说是这样。

首先类 Record 里面有一个 公共属性 cells,然后要对这个cells索引。

原本以为建立一个索引器就可以了,但是designer说不是。怎么这样说呢?

如果在 Record中建立索引,那,访问cells是 Record【key】,然后文档不是这样要求的。

文档要求 Record.Items【key】。。。

ho,no!!

也就是要有一个属性,去访问另外一个属性。注意,这里不是方法返回属性,而是属性。

这个我可没有见过,查阅 MSDN,关于属性的和索引的,我找到了 索引属性。它是这样说的: 

 

教程


假定您要编写一个 Document 类,该类封装非常长的文本章节。为能够方便地实现各种操作(如检查拼写),您可能希望以单词(以及字符)的虚拟数组形式查看文档。

下面的示例展示实现这种类的技术。对于每个“索引属性”,您定义一个嵌套类,该类包含对主类实例的反向引用。主类上的 readonly 字段提供对嵌套类(定义每个虚拟数组)的实例的访问。每个嵌套类定义一个索引器以及其他类似集合的方法(例如 Count 属性)。下面的示例针对“Words”和“Characters”展示这一点。

 

注意   请慎重使用该技术!仅在使用数组索引操作提供的抽象化能明确阐明使用您的类的代码,并且索引器同时具有“获取”(Get) 和“设置”(Set) 访问器时,才使用该模式。

 

 

msdn上还附有例子,但是一时间没有看明白。(别笑我蠢!)。于是自己试一下。

新建了一个工程,TestIndexer,里面有两个项目:TestIndexer和IndexerTest,分别用于定义和测试。

 

TestInderxer中只有一个类:

 

 

IndexerTest:

 

 

 

发现有三点很重要,一:内部类中必须有一个指向外部类的引用,否则不能使用外部类的属性。(当然,静态字段是可以的。)

二:外部类中要有 一个 类型是内部类的 属性。

三:索引写在 内部类中,并且内部类要和 外部类 改属性的访问级别相等。(估计前者大于后者应该都可以的。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值