在C#中有一些黑魔法代码,可以定义接口的默认实现。
因此,你可以这样编写:
var instance = new ISomeInterface();
任何建议吗?更新1:请注意,我没有问这是否是一个好主意。只是如何做到这一点。
更新2:对于看到已接受答案的任何人。
- Marc Gravel 在"Newing up" Interfaces中说:“这只应被视为一种好奇心。” - Eric Lippert 在"Newing up" Interfaces中说:“使用为COM互操作设计的工具来完成完全不同的任务是一个坏主意。这会使下一个负责维护代码的人无法理解您的代码。” - Stephen Cleary 在下面的评论中说:“虽然它可能有效,但如果有理性的程序员在生产代码中找到了它,他将重构为使用基类或依赖注入。”