静态类在某些其他类中不可用

时间:2014-07-18 11:13:02

标签: c# static

我为此道歉 - 这是一个愚蠢的问题,我讨厌自己提出这个问题,但我无法找出这种行为的原因。

我有一个包含静态和非静态类混合的命名空间。

namespace MyNameSpace.UI.Helpers
{
    public static class OrderHelper
    { // static methods
    }
}

namespace MyNameSpace.UI.Helpers
{
    public class CountToCampaignConverter : IMultiValueConverter
    { // non-static methods
    }
}

这些是辅助类,它们在整个应用程序中使用。在这堂课中:

using MyNameSpace.UI.Helpers;

namespace MyNameSpace.UI.ViewModels
{
    public class QuickCountViewModel : BaseViewModel
    {
        private void BuildOrderExclusionsOnCount()
        {
            CurrentAvailability.OrderExclusions = CountHelper.BuildOrderExclusionAsCsv(ordersToExclude);
        }
    }
}

然而在本课程中:

using MyNameSpace.UI.Helpers;

namespace MyNameSpace.Service.Services
{
    public class FulfillJobs : BaseService
    { // stuff
    }
}

当我尝试使用我的帮助程序类时,我可以访问非静态类,但不能访问静态类。

我在这里看不到任何命名冲突 - 如果这是问题,我肯定不能得到非静态的?

那么我还能在哪里找到解决问题的方法呢?

2 个答案:

答案 0 :(得分:1)

这是旧文章,但未发现修复方法,这个问题只发生在我身上。这是我的特殊情况和解决方案。

我有一个带有两个项目的Visual Studio 2019 C#解决方案:.NET Standard 2.0类库和使用该库的.NET Core 3.1控制台应用程序。一切正常,直到我将库从.NET Standard 2.0更改为2.1。之后,该库中定义的新静态项(类,属性,方法)将无法在应用程序或Visual Studio中识别。如果我将库重置为.NET Standard 2.0,则可以看到静态项目,但这对我来说不是可行的解决方案。

为解决该问题,我将该库的目标框架设置回.NET Standard 2.1。然后,我打开了应用程序项目的引用管理器(解决方案资源管理器>应用程序项目>依赖关系(右键单击)>添加项目引用)。我清除了对库的现有引用,然后单击“确定”。然后,我重复了该过程,但是恢复了对该库的引用。突然,应用程序和Visual Studio识别出库中的所有新静态项。

答案 1 :(得分:0)

原因是因为在第二个示例中,该类位于不同的namespaceMyNameSpace.Service.Services中。

如果你添加"使用"对于文件中的名称空间MyNameSpace.UI.Helpers,它将是可见的。

您也可以从您的服务中将您的类引用为UI.OrderHelper,因为它们共享根" MyNamespace"。