0

我在 Visual Studio 2010 中使用 C#.net 4.0。我收到错误消息

错误 10 找不到类型或命名空间名称“IRange”(您是否缺少 using 指令或程序集引用?) C:\git\emtexporter\EMTExporter.IRepository\IRangeRepository.cs 11 27 EMTExporter.IRepository

IRange 是项目 EMTExporter.IEntities 中的一个接口,项目 IEntities 构建成功。IRange.cs 有代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Wiggle.EMTExporter.IEntities;

namespace Wiggle.CategoryXMLExporter.IEntities
{
    interface IRange
    {
        long ID { get; }
        Dictionary<ILanguage, string> rangeNames { get; set; }
    }
}

问题出现在 IRangeRepository.cs 中,其代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Wiggle.EMTExporter.IEntities;

namespace CategoryXMLExporter.IRepository
{
    interface IRangeRepository
    {
        Dictionary<string,IList<IRange>> getAllRanges();
    }
}

我在 IRepository 项目中引用 EMTExporter.IEntities。我不知道可能出了什么问题!

编辑:问题是项目已从 CategoryXMLExporter 更改为 EMTExporter,但我没有更新项目的程序集名称和默认命名空间。更新了,公开了界面,现在它可以工作了!

4

5 回答 5

4

您的界面不公开尝试以下

public interface IRange  
于 2012-05-04T11:45:24.453 回答
2

默认可访问性级别的顶级类和接口是internal, not public,因此如果它们在不同的项目中,它将不可见。

直接在命名空间中声明的类和结构(换句话说,不嵌套在其他类或结构中)可以是公共的或内部的。如果未指定访问修饰符,则默认为 Internal。

namespace Wiggle.CategoryXMLExporter.IEntities
{
    public interface IRange
    {
        long ID { get; }
        Dictionary<ILanguage, string> rangeNames { get; set; }
    }
}
于 2012-05-04T11:46:53.800 回答
0

IRange位于名称空间中,Wiggle.CategoryXMLExporter.IEntities因此您需要引用它。同时制作界面public

于 2012-05-04T11:44:45.483 回答
0

您需要将命名空间添加Wiggle.CategoryXMLExporter.IEntities到您的 using 子句,因为IRange在那里定义:

using Wiggle.CategoryXMLExporter.IEntities;

此外,如果它在不同的程序集中,您需要制作它public

于 2012-05-04T11:45:19.087 回答
0

除了上面提到的之外,有时您可能需要确保将引用的库配置为在选定的活动配置和平台下构建。

  1. 在 Visual Studio 2012 或 2013 中,右键单击解决方案并选择“配置管理器”。

  2. 对于选定的“Active Solution Configuration”(例如“Debug”或“Release”)和“Active Solution Platform”(例如“Any CPU”、“x64”、“x86”或“ARM”),确保项目包含您的接口及其任何依赖项都已检查“构建”。

于 2015-01-04T19:32:23.630 回答