Jim*_*ake 14
如果这真的是你需要它的工作方式,那么接口是错误的选择.相反,您可以拥有一个抽象类,您的类可以使用虚拟方法从中派生.Virtual允许覆盖它,但不需要它.由于虚方法具有实现,因此它不能是接口的一部分.
woj*_*ojo 10
如果要测试对象是否实现了接口以便可以调用该方法,则可以这样做:
interface IFoo { void Bar(); }
object o = GetObjectThatMayImplementIFoo();
IFoo foo = o as IFoo;
if (foo != null) {
foo.Bar();
}
Run Code Online (Sandbox Code Playgroud)
我想那就是你问的问题?
我认为您真正要寻找的是部分方法。这些是 .NET 3.5 中的新功能。您只需将该方法声明为“部分”:
partial void OnLoaded();
Run Code Online (Sandbox Code Playgroud)
该方法可以正常调用:
OnLoaded();
Run Code Online (Sandbox Code Playgroud)
巧妙的是,如果该方法没有在任何地方实现,编译器足够聪明,不会生成调用。
这主要是为 LINQ to SQL 和实体框架实现的;这允许生成的代码(使用部分类)在不知道它们是否被实现的情况下定义和调用方法。
将部分方法与接口混合会很有趣(我还没有尝试过),但我的第一次尝试是在接口中声明一个部分方法。