我在Visual Studio 2010中使用C#.net 4.0。我收到错误
错误10找不到类型或命名空间名称'IRange'(是 你错过了使用指令或程序集 参考?)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,但我没有更新项目的程序集名称和默认名称空间。更新了,使界面公开,现在它可以工作!
答案 0 :(得分:4)
您的界面不公开请尝试以下
public interface IRange
答案 1 :(得分:2)
默认的accessibility level顶级类和接口是internal
,而不是public
,因此如果它们位于不同的项目中,则不会显示。
直接在命名空间内声明的类和结构(换句话说,不嵌套在其他类或结构中)可以是公共的或内部的。如果未指定访问修饰符,则内部是默认值。
namespace Wiggle.CategoryXMLExporter.IEntities
{
public interface IRange
{
long ID { get; }
Dictionary<ILanguage, string> rangeNames { get; set; }
}
}
答案 2 :(得分:0)
IRange
位于命名空间Wiggle.CategoryXMLExporter.IEntities
中,因此您需要引用它。也可以创建接口public
答案 3 :(得分:0)
您需要将名称空间Wiggle.CategoryXMLExporter.IEntities
添加到using子句中,因为IRange
在那里定义:
using Wiggle.CategoryXMLExporter.IEntities;
此外,如果它位于不同的程序集中,则需要将其设为public
。
答案 4 :(得分:0)
除了上面提到的内容之外,有时您可能需要确保将引用的库配置为在所选的活动配置和平台下构建。
在Visual Studio 2012或2013中,右键单击解决方案并选择&#34; Configuration Manager&#34;。
对于所选的&#34; Active Solution Configuration&#34; (例如&#34; Debug&#34;或&#34; Release&#34;)和&#34; Active Solution Platform&#34; (例如&#34;任何CPU&#34;,&#34; x64&#34;,&#34; x86&#34;或&#34; ARM&#34;)确保包含您的接口和任何它的依赖关系有&#34; Build&#34;检查。