编辑:我的问题不是关于使用块以及它的工作原理。我的问题是关于下面两种方法之间的区别。
我正在阅读CQRS旅程指南,我不理解这行代码:
using (repo as IDisposable)
这是什么意思?为什么要将其用作IDisposable?在典型的using块中,人们不需要将其用作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
接口,为什么使用as IDisposable
就可以神奇地允许这个实例被处理?如果这个类已经实现了IDisposable
,那么为什么不能直接在using
语句中使用它而需要进行类型转换呢?我从来没有看到过需要这样做。 - Jeroen Vannevel