我正在尝试做一些相当......独一无二的事情,也许有更好的方法可以做到但是...我正在做一个控制(ish)系统的反转,它使用扩展方法来启用/禁用该类的组件,所以在我进入更多细节并让您感到困惑之前,让我们看看一些代码!
using TestComponents.CommunicationProtocols.RS232;
//this brings in the
//ConnectRS232 extension method
namespace TestMeNamespace
{
public class Test //Although this class is defined here, we extend it above
{
public void Start()
{
this.ConnectRS232(1, 9600); //calls the ConnectRS232 extension method
}
}
}
简而言之,using声明将Test扩展到我们DEFINE测试的同一个文件中。 (继承也没问题)但是这有一些问题!首先,丑陋的必需品“这个”。 BLECH。其次,这是一个混乱的共同依赖系统。
这是我试图实现的目标:
请随时通过评论向我提出其他问题,但除非您有任何答案,否则请不要发布答案!
编辑:代替提出的问题,我正在我的系统中对C#脚本(www.cs-script.com)进行一些JIT编译,而且这些脚本主要是由非程序员编写的。使用真正“特殊”的专有语言编写多年的脚本。我想让事情变得简单,并且一大堆“这个”电话看起来像杂乱无章。
答案 0 :(得分:1)
我不确定我是否明白这一点...
您的“扩展程序”仅限编译时间。扩展方法仅作为静态方法工作,并且由于您是在导入命名空间时构建的,因此它比任何形式的IoC更多地是编译时构造。 (扩展方法只是编译时的事情 - 它们在运行时并没有真正做任何事情。)
另外,鉴于上述声明,使用this.Method()似乎并不繁琐(这是正常使用的好习惯,这就是为什么StyleCop等工具会强制你在每个方法调用上执行此操作)。
你能给我们一个更好的例子来说明如何使用它吗?现在,它似乎是一种将代码放在两个地方而不是一个地方的方式,没有真正的好处......