我为此道歉 - 这是一个愚蠢的问题,我讨厌自己提出这个问题,但我无法找出这种行为的原因。
我有一个包含静态和非静态类混合的命名空间。
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
}
}
当我尝试使用我的帮助程序类时,我可以访问非静态类,但不能访问静态类。
我在这里看不到任何命名冲突 - 如果这是问题,我肯定不能得到非静态的?
那么我还能在哪里找到解决问题的方法呢?
答案 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"。