我正在使用C#.NET,并且基本上有一个包含许多区域的页面。
在我的代码隐藏中,我基本上希望能够做到这样的事情:
bool result1 = MyClass.Section["area1"].Process();
bool result4 = MyClass.Section["area4"].Process();
我需要编写一个可以调用某种“Process
”方法的类,并且能够在该方法中接受类似“area1
”的参数。
任何帮助我开始使用此功能的人都将不胜感激,谢谢!
答案 0 :(得分: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>
,因为它会为您提供可用的索引器。