【发布时间】:2013-09-06 10:36:28
【问题描述】:
我想知道是否有一些内联的短方法来创建实现接口的类。就像有匿名方法一样,但有实现接口。
问题是:
interface iSomeInterface
{
void DoIt();
}
public void myMethod(iSomeInterface param)
{
...
}
我想这样使用它:
object.myMethod(new { override DoIt() { Console.WriteLine("yay"); } } : iSomeInterface);
有什么想法吗?
如有重复,请见谅。
【问题讨论】:
-
Func<T>和Action<T>及其变体可能对您实现类似的目标有用... -
您可以使用 Moq - 这将严重滥用其目的,但它可以让您创建本质上是匿名的类。
-
这并不意味着刻薄或粗鲁 - 真的......但我至少想建议你停止尝试在代码中找到'忍者一样棘手的把戏'来做事......尤其是那个 1 班轮 - 几乎让我尖叫......真的......作为一个提供应用程序支持的人(在新旧项目上工作,有时没有文档),我确信开发人员认为他们正在做的事情真的很酷,最终通常是一个 bug 潜入的地方。最重要的是,它很难维护,并且很难在一段时间后回来并知道你刚刚做了 WTF。
-
@ninjahedgehog 要在 c# 中解决这个问题,它不会是单行的。不要那么懒惰,创建一个新类。在您编写、维护和评论此堆栈的时间里,您可能已经编写了您需要的所有代码。
标签: c#