Tôi có một lớp học với lĩnh vực này:Tại sao phương thức Dispose() không có sẵn trên đối tượng IDisposable của tôi?
private WcfChannelFactory<IPrestoService> _channelFactory;
Trong phương pháp Dispose()
, tôi đang làm điều này:
if (_channelFactory != null) { _channelFactory.Dispose(); }
Nhưng điều đó tạo ra một lỗi:
Cannot access explicit implementation of IDisposable.Dispose
Sau khi thực hiện một số research, có vẻ như tôi có thể vứt bỏ theo cách này:
if (_channelFactory != null) { (_channelFactory as IDisposable).Dispose(); }
Tôi không hiểu hai điều:
Tại sao không phải là
Dispose()
sẵn?WcfChannelFactory<T>
có nguồn gốc từChannelFactory<T>
, xuất phát từChannelFactory
, triển khaiIDisposable
. Tuy nhiên,ChannelFactory
không có phương thứcDispose()
. Sao có thể như thế được?Nếu tôi có thể (nên?) Chỉ cần gọi
Close()
trên_channelFactory
, tại sao nhà nước không phải là tài liệu XMLClose()
cũng sẽ gọiDispose()
? Có lẽ nó sẽ không? Điều này là khó hiểu.
Vậy làm thế nào tôi phải vứt bỏ của '_channelFactory'? Tôi có nên gọi 'Close() '? Tôi có nên gọi là 'Vứt bỏ()'? –
@Bob, nevermind. Đã hiểu sai câu hỏi ban đầu của bạn. Có vẻ như bạn đang triển khai mẫu dùng một lần của riêng mình. –
@AnthonyPegram Tôi không thể. Phương thức trả về '_channelFactory'. Người tiêu dùng đang gói các cuộc gọi trong một 'sử dụng' để lớp của tôi cần phải thực hiện' IDiposable' và dipose của nó. –