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

C# 静态类在某些其他类中不可用,c#,static,C#,Static,我为此道歉——这是一个愚蠢的问题,我讨厌自己问这个问题,但我想不出这种行为的原因 我有一个包含静态类和非静态类的混合名称空间 namespace MyNameSpace.UI.Helpers { public static class OrderHelper { // static methods } } namespace MyNameSpace.UI.Helpers { public class CountToCampaignConverter : IMul

我为此道歉——这是一个愚蠢的问题,我讨厌自己问这个问题,但我想不出这种行为的原因

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

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
    }
}
然而,在这一类中:

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
    }
}
当我尝试使用helpler类时,我可以访问非静态类,但不能访问静态类

我在这里看不到任何命名冲突-如果这是问题所在,我肯定也无法获得非静态的命名冲突


那么,我还可以从哪里找到解决问题的方法呢?

原因是在第二个示例中,该类位于不同的名称空间MyNamespace.Service.Services中

如果在文件中为名称空间MyNameSpace.UI.Helpers添加“using”,则该名称空间将可见


您还可以从服务中将类引用为UI.OrderHelper,因为它们都共享根“MyNamespace”。

这是一篇旧文章,但没有发现修复程序,这个问题正好发生在我身上。这是我的特殊场景和解决方案

我有一个VisualStudio2019 C#解决方案,包含两个项目:一个.NET标准2.0类库和一个使用该类库的.NET Core 3.1控制台应用程序。在我将库从.NET标准2.0更改为2.1之前,一切都很正常。之后,库中定义的新静态项(类、属性、方法)将无法在应用程序或Visual Studio中识别。如果我将库重置回.NET标准2.0,那么静态项将可见,但这对我来说不是一个可行的解决方案


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

您可以使用MyNameSpace.UI.Helpers.CountToCampaignConverterI使用您的代码,静态类可用。“我认为@ppittle的猜测可能是正确的?是Resharper抱怨不可用还是编译器不可用?”比克的观点被采纳了。我只是仲裁地将代码移到另一个程序集中的另一个类中,它似乎从那里开始工作。我相信@bikie所说的是,我们需要更多的上下文来诊断问题。正如您在示例代码中所看到的,using语句已经存在。抱歉。有没有可能你忘了用助手引用DLL,而有其他DLL在同一名称空间中发布了某些内容?我不这么认为-否则,我将面对该DLL中所有类的问题,而不仅仅是其中的一些,对吗?是的,你是对的。该DLL上的任何类都不可访问。命名空间名称中没有任何“拼写错误”。你的问题毫无意义。如果这是可以复制的,我可以帮你。我想有些信息丢失了。