【发布时间】:2010-10-01 23:25:39
【问题描述】:
假设我有一个 DLL 程序集,其中包含一个具有两种方法的自动生成类:
public class AutoGeneratedClass
{
public int DoSomething(bool forReal) { ??? }
public void DoSomethingElse(string whatever) { ??? }
}
方法可以是任何东西,真的。以上只是一个说明。
我需要生成什么样的代码来代替 ???上面让它自动打包调用的参数并将它们发送到另一个类上的单个泛型方法,然后它会实际处理调用并返回结果?
public class GenericClass
{
public ??? GenericHandler(???) { ??? }
}
我想我正在寻找与 LINQ 中的 Expression<Func<...>> 类似的东西,它编译成可以发送到任何地方并在那里拆开的数据结构。
不过,我希望保持原始方法原型与正常的本地实现方法相同,以保持 AutoGeneratedClass 的调用者不明智。
如果这无法实现,我有什么选择?
谢谢!
【问题讨论】:
-
如果您正在生成代码,您真的需要包含表达式吗? ??? => return GenericClass.GenericHandler
(forReal) -
我只生成 AutoGeneratedClass。 GenericClass 及其 GenericHandler() 方法是在与 AutoGeneratedClass 完全不同的程序集中手动编码的。所以恐怕这行不通。
标签: c# linq methods delegation