Ste*_*ley 0 c# implementation interface
纵观Project Server 2010的SDK(发现这里在.net反射,我发现一些有趣的事情是让我困惑.
显然,SvcProject.ProjectClient该类ProjectServerServices.dll继承自System.ServiceModel.ClientBase<Project>,这是一个实现System.IDisposable接口的抽象类.但是,当我检查SvcProject.ProjectClient类(不是抽象的)时,没有Dispose方法.是什么赋予了?我认为从接口继承的每个方法都必须在具体的实现中实现(否则接口的用途是什么)..NET Reflector对我说谎吗?微软出于某种原因绕过了这个要求吗?这是怎么回事?
它可能是明确实现的,如下所示:
void IDisposable.Dispose()
{
// Code here
}
Run Code Online (Sandbox Code Playgroud)
要么是它还是从基类继承了该方法.仅仅因为它ClientBase<T>是抽象的并不意味着它IDisposable本身不能正确实现.实际上,它必须要么实现它,要么重新声明它作为一种抽象方法来强制派生类实现它.
无论哪种方式,该方法将以某种方式存在.
显式接口实现意味着该方法仅在通过接口类型查看实例时可用.例如:
class Foo : IDisposable
{
void IDisposable.Dispose() {}
}
...
Foo foo = new Foo();
foo.Dispose(); // Invalid: compile time error
IDisposable d = foo;
d.Dispose(); // Valid
((IDisposable)foo).Dispose(); // Valid (no need for temp variable)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |