如何创建此类(涉及索引器属性?)

时间:2013-09-30 23:30:02

标签: c# .net

我正在使用C#.NET,并且基本上有一个包含许多区域的页面。

在我的代码隐藏中,我基本上希望能够做到这样的事情:

bool result1 = MyClass.Section["area1"].Process();
bool result4 = MyClass.Section["area4"].Process();

我需要编写一个可以调用某种“Process”方法的类,并且能够在该方法中接受类似“area1”的参数。

任何帮助我开始使用此功能的人都将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

按照正常的.NET命名约定,我假设你的意思是,你的例子是静态引用MyClass而不是实例引用(这可能不是一个很大的改变)。鉴于这种假设,你似乎有一个类:

static class MyClass
{
    public static IIndexer Section { get; } 
}
在这种情况下,

IIndexer可以是任何实现索引器属性的类型,该属性接受字符串并返回具有名为Process的方法的类型,该方法又返回boolIIndexer理论上看起来像:

interface IIndexer
{
    ISomething this[string] { get; }
}

接下来,我们将使用简单的ISomething界面填写上面的IProcess空白内容,以便我们不必了解您的具体实施情况:

interface IProcess
{
    bool Process();
}

所以现在上面的索引器可以改为:

IProcess this[string] { get; }

当然,以上都没有任何真正的可执行代码,但概述了做你所追求的事情所必需的对象。现在,当您使用已履行的合同运行代码时,调用链非常简单:

bool result1 = MyClass.Section["area1"].Process();
// MyClass.Section > IIndexer.this[string] > IProcess.Process

要想POC这个想法,模仿IIndexer实现的好方法可能是使用Dictionary<string, IProcess>,因为它会为您提供可用的索引器。