说我有一个DLL组件,含有两种方法自动生成的类:

public class AutoGeneratedClass
{
    public int DoSomething(bool forReal) { ??? }
    public void DoSomethingElse(string whatever) { ??? }
}

的方法可以是任何东西,真的。以上只是例示。

我需要什么样的代码代替产生???以上为具有自动收拾呼叫的参数,并将其发送到另一个类中的单个通用方法,然后实际上将处理该呼叫并返回结果?

public class GenericClass
{
    public ??? GenericHandler(???) { ??? }
}

我想我寻找的东西的工作原理类似的LINQ,它编译成可在任何地方发送和拆开有一个数据结构来Expression<Func<...>>

我想保持原来的方法原型一样的,如果他们是正常的,在本地实现的方法,不过,以保持AutoGeneratedClass的非呼叫者明白。

如果这无法实现,我有哪些选择?

谢谢!

有帮助吗?

解决方案

你必须有一个班?生活会使用接口轻松很多 - 那么你可以使用的 System.Runtime.Remoting.Proxies.RealProxy 或可能根据需要创建一个新的类型。我相信 Rhino.Mocks 做后者(使用库做繁重) - 如果你的可以的使用界面,看到Rhino.Mocks是如何实现的可能是一个很好的起点。

其他提示

我要采取刺伤在黑暗中在这里,因为我不知道你所有的局限性。这听起来像一个良好的情况下,对部分方法/局部类为你自动生成的类。 (注意:我没有运行通过编译器这个好,因此它可能需要一些清理。)

public partial class AutoGenerated
{
    public partial int ProcessDoSomething(bool forReal);
    public int DoSomething(bool forReal)
    {
        //some generated code against error conditions??
        return ProcessDoSomething(forReal)
    }

    .....
}

public partial class AutoGenerated
{
    public partial int ProcessDoSomething(bool forReal)
    {
        //call the generic handler...
    }
}

我要留在通用处理器的LINQ般的表达部分离开,因为我仍然在所著的Grokking表达式工作。但是值得考虑的是如何硬/轻松将您的GenericClass是保持如果你走了LINQ般的表达路径?

我的经验是,相当多的开发者不舒服的代表和兰巴表达式。他们畏缩(字面)看,使用表达式的代码时。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top