提问人:Yan 提问时间:2/21/2018 最后编辑:Stephen KennedyYan 更新时间:2/22/2018 访问量:74
在控制器内部使用指令
Using directives inside controller
问:
如何避免在所有控制器中使用指令重复 10+?
每个控制器中大约有 10+ 多个 using 指令,因为它们引用了我们在公司中使用的核心框架功能。我知道你会说逻辑应该被拆分,这样我就不再需要它们了,但这不是一个选择。
所以为了清楚起见,我说的是这个:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.Entity;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Mvc;
using AutoMapper.QueryableExtensions;
using Kendo.Mvc.UI;
答:
2赞
programtreasures
2/21/2018
#1
using 语句可确保即使在对对象调用方法时发生异常时,也会调用 Dispose。 您可以通过将对象放在 try 块中,然后在 finally 块中调用 Dispose 来获得相同的结果;实际上,编译器就是这样转换 using 语句的。
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
翻译者 编译器
{
Font font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
}
因此,在您的情况下,您可以在单个块中添加添加对象初始化,并在 finally 块中全部处理,请参阅下面的示例,
{
Font font1 = new Font("Arial", 10.0f);
Font font2 = new Font("Arial", 10.0f);
Font font3 = new Font("Arial", 10.0f);
Font font4 = new Font("Arial", 10.0f);
Font font5 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
((IDisposable)font1).Dispose();
((IDisposable)font2).Dispose();
((IDisposable)font3).Dispose();
((IDisposable)font4).Dispose();
((IDisposable)font5).Dispose();
}
}
评论
0赞
Yan
2/21/2018
对不起,我的意思是使用指令,而不是使用语句。我已经编辑了我的帖子。谢谢你的努力。
评论