0

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

在我的代码隐藏中,我基本上希望能够执行以下操作:

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

我需要编写一个类来调用某种“ Process”方法,并能够让它area1在该方法中接受像“”这样的参数。

任何帮助我开始这方面的帮助将不胜感激,谢谢!

4

1 回答 1

1

按照正常的 .NET 命名约定,我假设您的意思是,通过您的示例,它MyClass是静态引用的,而不是通过实例引用的(这可能不是一个大的变化)。鉴于该假设,您似乎有一个类似的类:

static class MyClass
{
    public static IIndexer Section { get; } 
}

IIndexer在这种情况下,可以是任何实现索引器属性的类型,该属性接受一个字符串并返回一个类型,该类型具有一个名为的方法,该方法Process又返回一个bool. IIndexer理论上可能看起来像:

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>因为它会为您提供一个可用的索引器来满足您的目的。

于 2013-10-01T00:06:15.667 回答