我有以下代码:
using Data;
using MyProject_API.Models.ViewModels;
using System.Linq;
using Utilities.Web.Authentication;
namespace MyProject_API.Services.EmailTemplates
{
/// <summary>
/// Defines the <see cref="EmailTemplatesSearch" />
/// </summary>
public class EmailTemplatesSearch
{
/// <summary>
/// Initializes a new instance of the <see cref="EmailTemplatesSearch"/> class.
/// </summary>
/// <param name="dataContext">The dataContext<see cref="DataContext"/></param>
/// <param name="user">The user<see cref="MyProjectIdentity"/></param>
public EmailTemplatesSearch(DataContext dataContext, MyProjectIdentity user)
{
_db = dataContext;
_user = user;
}
我在
CodeFormatter
的帮助下清理了代码并得到以下代码:
namespace MyProject_API.Services.EmailTemplates
{
using MyProject_API.Models.ViewModels;
using System.Linq;
using Utilities.Web.Authentication;
/// <summary>
/// Defines the <see cref="EmailTemplatesSearch" />
/// </summary>
public class EmailTemplatesSearch
{
/// <summary>
/// Initializes a new instance of the <see cref="EmailTemplatesSearch"/> class.
/// </summary>
/// <param name="dataContext">The dataContext<see cref="DataContext"/></param>
/// <param name="user">The user<see cref="MyProjectIdentity"/></param>
public EmailTemplatesSearch(DataContext dataContext, MyProjectIdentity user)
{
_db = dataContext;
_user = user;
}
如您所见,
CodeFormatter
失去了using Data;
。我尝试将 using Data;
添加到使用列表中,但代码无法编译,无法找到 DataContext
命名空间中的 Data
。我解决了将 using Data;
从名称空间移出的问题,但它看起来像拐杖。 DataContext
的定义类似于
namespace Data
{
public class DataContext
CodeFormatter
会失去using Data;
?using Data;
在命名空间内不起作用?我搜索过类似的问题: LINQ to SQL Designer Bug,“using”指令应该在命名空间内部还是外部?等等,但我仍然不明白如何解决我的问题
maccettura 的第一条评论中已经给出了解决方案。
如果您阅读了“我的回答”主题“‘using’指令应该在 C# 中的命名空间内部还是外部?”你已经链接了,你应该明白,当你有 using Data;
inside你的声明
namespace MyProject_API.Services.EmailTemplates { /* ... */ }
时,任何命名空间:
MyProject_API.Services.EmailTemplates.Data或
MyProject_API.Services.Data
或
MyProject_API.Data
before将匹配
命名空间 Data
您真正想要的。
global
别名
,如下所示:
namespace MyProject_API.Services.EmailTemplates
{
using global::Data; // <--- global alias used
using MyProject_API.Models.ViewModels; // <--- unless you have other name conflicts, 'using Models.ViewModels;' is sufficient now
using System.Linq;
using Utilities.Web.Authentication;
// your classes here
}
这将使您的
using
指向您想要的名称空间。这样,它将不再是未使用的
using
指令,并且代码格式将不再“丢失”(即删除)它。您用于将 using
从外向内移动的工具显然不够智能,无法添加所需的
global::
。