我只是看一个项目,我看到一些我觉得不应该工作的工作.
如果你查看下面的代码片段,我就在命名空间中CustomFields.DateTimeField.Drivers,using该文件中唯一的其他语句是下面的 其他命名空间CustomFields.DateTimeField.
但是,如果你看起来public class DateTimeFieldDriver它是使用一种类型Fields.DateTimeField.
查看DateTimeField命名空间中的那个定义,CustomFields.DateTimeField.Fields但我只为其姐妹命名空间设置了uses.
所以问题是双重的 - 为什么这有效?这被认为是一种不好的做法吗?
有疑问的片段:
using System;
using JetBrains.Annotations;
using Orchard;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Localization;
using CustomFields.DateTimeField.Settings;
using CustomFields.DateTimeField.ViewModels;
namespace CustomFields.DateTimeField.Drivers {
[UsedImplicitly]
public class DateTimeFieldDriver : ContentFieldDriver<Fields.DateTimeField> {
public IOrchardServices Services { get; set; }
private const string TemplateName = "Fields/Custom.DateTime"; // EditorTemplates/Fields/Custom.DateTime.cshtml
public DateTimeFieldDriver(IOrchardServices services) {
Services = services;
T = NullLocalizer.Instance;
}
Run Code Online (Sandbox Code Playgroud)
如果你想对它进行调查,可以在这里下载项目(MVC2项目).
例如,当您将代码声明为特定命名空间内时CustomFields.DateTimeField.Drivers,您也隐式导入所有"父"命名空间.
在这种情况下,你有一个暗示使用for CustomFields和CustomFields.DateTimeField.这就是为什么你没有指定明确的using声明在类型CustomFields.DateTimeField,此外,对于子命名空间包含在其中.
因此,Fields.DateTimeField通过将发现CustomFields.DateTimeField(隐含的命名空间)与Fields.DateTimeField(显式的命名空间)解析到CustomFields.DateTimeField.Fields.DateTimeField.
不,据我所知,这不是一种不好的做法.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |