編輯:我的問題不是關於使用塊以及它是如何工作的。我的問題是關於兩種做法的區別,如下所示。在使用塊中使用'作爲IDisposable'
我讀了CQRS之旅指南,我不明白這行代碼:
using (repo as IDisposable)
這是什麼意思?爲什麼使用它作爲IDisposable?在一個典型的使用塊,一個並不需要使用它作爲IDisposable接口:
using (var repo = this.respositoryFactory()) { // ... }
任何想法,爲什麼作者寫了它,而不是第一種方式的第二種方式?
這是出現的代碼的方法:
private Conference.Web.Public.Models.Conference GetConference(string conferenceCode)
{
var repo = this.repositoryFactory();
using (repo as IDisposable)
{
var conference = repo.Query<Conference>()
.First(c => c.Code == conferenceCode);
var conferenceModel =
new Conference.Web.Public.Models.Conference
{
Code = conference.Code,
Name = conference.Name,
Description = conference.Description
};
return conferenceModel;
}
}
很簡單,你不能在使用的塊中使用任何舊的類型,它必須是一個IDisposable類型。 – iamkrillin
如果'as IDisposable'神奇地允許實例在其類沒有實現'IDisposable'的情況下被拋棄?如果它已經實現了'IDisposable',爲什麼這對於'using'語句不夠呢?我從來沒有見過它需要演員。 –
@iamkrillin如果它已經是一次性使用,則不必在使用塊中設置'作爲IDisposable'。 –