我的命名空间的名称与.net framework命名空间相同

时间:2013-01-10 08:29:51

标签: c# .net

我遇到了这个问题,但不知道如何修复它。我不喜欢更改名称空间。这是我的代码:

namespace ParlayRMS.Models.System
{
    using System;
    using System.Globalization;

    public class MaintenanceInfo
    {
        public MaintenanceInfo()
        {
            IsDownTime = false;
            TimeFrom = DateTime.Now.ToString(CultureInfo.InvariantCulture);
            TimeTo = DateTime.Now.ToString(CultureInfo.InvariantCulture);
        }
        public bool IsDownTime { get; set; }
        public string TimeFrom { get; set; }
        public string TimeTo { get; set; }
    }
}

此类导致错误:“无法找到类型或命名空间'DateTime'。”因为这个类放在命名空间System中,与.NET Framework相同。如果我将“ParlayRMS.Models.System”更改为“ParlayRMS.Models”,这个类就可以,但我不喜欢这种方式。我需要一个针对这种情况的解决方案而不需要更改许多代码。

感谢。

5 个答案:

答案 0 :(得分:3)

System中的using System.Globalization指的是你的命名空间,因此它应该是另一个编译错误。

如果您真的喜欢命名空间中的using(我个人不喜欢这种做法),您应该使用global:: extern别名(我认为这就是所谓的)

namespace ParlayRMS.Models.System
{
    using global::System;
    using global::System.Globalization;

    public class MaintenanceInfo
    {
        public MaintenanceInfo()
        {
            IsDownTime = false;
            TimeFrom = DateTime.Now.ToString(CultureInfo.InvariantCulture);
            TimeTo = DateTime.Now.ToString(CultureInfo.InvariantCulture);
        }
        public bool IsDownTime { get; set; }
        public string TimeFrom { get; set; }
        public string TimeTo { get; set; }
    }
}

答案 1 :(得分:1)

将用品放在外面:

using System;
using System.Globalization;

namespace ParlayRMS.Models.System
{

    public class MaintenanceInfo
    {
        public MaintenanceInfo()
        {
            IsDownTime = false;
            TimeFrom = DateTime.Now.ToString(CultureInfo.InvariantCulture);
            TimeTo = DateTime.Now.ToString(CultureInfo.InvariantCulture);
        }
        public bool IsDownTime { get; set; }
        public string TimeFrom { get; set; }
        public string TimeTo { get; set; }
    }
}

答案 2 :(得分:1)

为什么在命名空间块中有使用语句?如果你将它们移到外面,我相信它应该很好。

答案 3 :(得分:0)

尝试:

global::System.DateTime dateTime;

或以其他方式:

using SystemAlias = System;

然后:

SystemAlias.DateTime dateTime;

BTW:在命名空间声明之前放置你的使用。

答案 4 :(得分:0)

尝试

using NETDateTime = System.DateTime;

然后在你的代码中:

TimeFrom = NETDateTime.Now.ToString(CultureInfo.InvariantCulture);