2012-05-04 4 views
0

Я использую C# .NET 4.0 с Visual Studio 2010. Я получаю ошибкутип или пространство имен «IRange» не может быть найдено

Ошибка 10 Тип или пространство имен имя «IRange» не может можно найти (которые Соскучились с помощью директивы или сборочный ссылку?) C: \ мерзавец \ emtexporter \ EMTExporter.IRepository \ IRangeRepository.cs 11 27 EMTExporter.IRepository

IRange является интерфейсом в eMTExporter проекта .Entities и 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(); 
    } 
} 

Я ссылающиеся EMTExporter.IEntities в проекте IRepository. Я понятия не имею, что может быть неправильным!

изменить: проблема заключалась в том, что проект был изменен с CategoryXMLExporter на EMTExporter, но я не обновил имя сборки и пространство имен по умолчанию для проекта. Обновлено, что интерфейс стал общедоступным, и теперь он работает!

+0

Интерфейс по умолчанию не является общедоступным. Поэтому добавьте модификатор 'public' в' IRange'. Однако сообщение об ошибке отличается от моей системы, поэтому, возможно, это не ошибка, которую вы ищете. –

ответ

4

Ваш интерфейс не является публичной попробовать следующие

public interface IRange 
0

IRange находится в пространстве имен Wiggle.CategoryXMLExporter.IEntities, поэтому вам нужно будет указать это. Также сделать интерфейс public

+0

Только что выяснил проблему. Проект был переименован из CategoryXMLExporter в EMTExporter, я перешел к свойствам для EMTExporter.IEntities и изменил имя сборки на Wiggle.EMTExporter.IEntities и сделал интерфейс общедоступным, который его решил! – Steve

0

Вам нужно добавить пространство имен Wiggle.CategoryXMLExporter.IEntities вашим использованием положений, поскольку IRange определяется там:

using Wiggle.CategoryXMLExporter.IEntities; 

Кроме того, если он находится в другой сборке, вы должны сделать это public.

2

по умолчанию accessibility level верхние классы и интерфейсы уровне является internal, не public, так что, если они находятся в разных проектах, это не будет видно.

Классы и структуры, объявленные непосредственно в пространстве имен (другими словами, которые не вложены в другие классы или структуры) могут быть как общедоступными, так и внутренними. Внутренний - это значение по умолчанию, если не указан модификатор доступа.

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

В дополнение к тому, что уже было сказано выше, иногда вам может понадобиться, чтобы обеспечить ссылочный библиотеку конфигурируется как строится под выбранной активной конфигурации и платформы.

  1. В Visual Studio 2012 или 2013 щелкните правой кнопкой мыши Solution и выберите «Configuration Manager».

  2. Для выбранной «Конфигурации активного решения» (например, «Отладка» или «Освобождение») и «Активная платформа решений» (например, «Любой процессор», «x64», «x86» или «ARM») обеспечивают проект, содержащий ваши интерфейсы и любые его зависимости, проверяет «Build».

Смежные вопросы