相关疑难解决方法(0)

C#接口.隐式实现与显式实现

在C#中隐式显式实现接口有什么区别?

什么时候应该使用隐式?什么时候应该使用显式?

是否有任何利弊和/或缺点?


Microsoft的官方指南(来自第一版框架设计指南)声明不建议使用显式实现,因为它会给代码带来意外行为.

我认为这个指南在IoC之前的时候是非常有效的,当你没有作为接口传递时.

任何人都可以触及这方面吗?

.net c# interface

615
推荐指数
10
解决办法
14万
查看次数

为什么我的IDisposable对象上的Dispose()方法不可用?

我有一个这个领域的课:

private WcfChannelFactory<IPrestoService> _channelFactory;
Run Code Online (Sandbox Code Playgroud)

在这个Dispose()方法中,我这样做:

if (_channelFactory != null) { _channelFactory.Dispose(); }
Run Code Online (Sandbox Code Playgroud)

但这会产生错误:

无法访问IDisposable.Dispose的显式实现

经过一些研究后,似乎我可以这样处理:

if (_channelFactory != null) { (_channelFactory as IDisposable).Dispose(); }
Run Code Online (Sandbox Code Playgroud)

我不明白两件事:

  1. 为什么不可Dispose()用?WcfChannelFactory<T>派生自ChannelFactory<T>,派生自ChannelFactory哪个实现IDisposable.然而ChannelFactory,没有Dispose()方法.这怎么可能?

  2. 如果我可以(应该?)简单地调用Close()_channelFactory,为什么不XML文档状态Close()会也呼吁Dispose()?也许不会?这令人困惑.

c# dispose

7
推荐指数
1
解决办法
2406
查看次数

标签 统计

c# ×2

.net ×1

dispose ×1

interface ×1