Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / error CS0234: The type or namespace name ... does not exist in the namespace ... / 1 сообщений из 1, страница 1 из 1
20.02.2014, 15:51
    #38567708
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
error CS0234: The type or namespace name ... does not exist in the namespace ...
Ситуация, с которой ни разу не доводилось сталкиваться. Весь нижеприведенный код упрощен до предела.
Есть солюшен из нескольких проектов. Проект 1 (class library):
Код: c#
1.
2.
3.
4.
5.
6.
namespace Interfaces
{
  public interface IFoo
  {
  }
}


Проект 2 (class library), имеет референс на проект 1:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
namespace Factory
{
  public static class FooFactory
  {
    public static IFoo GetFoo()
    {
      return Foo.Create();
    }
  }

  internal class Foo : IFoo
  {
    internal protected Foo(){}
    internal static Foo Create()
    {
      return new Foo();
    }
  }
}


Проект 3 (class library), имеет референсы на проект 1 и проект 2:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
namespace FooWorker
{
  public class Worker
  {
    IFoo _foo;
    public IFoo Foo
    {
      get
      {
        if (_foo == null)
          _foo = FooFactory.GetFoo();
        if (_foo == null)
          throw new ApplicationException();
        return _foo;
      }
    }
  }
}


Проект 4 (exe), имеет референсы на проект 1 и проект 3:
Код: c#
1.
2.
3.
4.
5.
6.
7.
static void Main()
{
  var fw = new Worker();
  fw ...
  Console.WriteLine("done");
  Console.ReadKey(true);
}


Так вот, при компиляции всё это счастье рвется в проекте 3 на вызове FooFactory.GetFoo с ошибкой error CS0103: The name 'FooFactory' does not exist in the current context. Порылся в гугле, кое-что нашел - например, вот это , или вот это - без толку. Т.е. всё там изложенное никак на мою ситуацию не влияет. Стало даже еще интереснее - попробовал совет указать перед именем статик-класса (который фабрика) полный неймспейс. Стало рваться на компиляции с ошибкой error CS0234: The type or namespace name 'FooFactory' does not exist in the namespace '...' (are you missing an assembly reference?). Нет, референс проверен, имя класса тоже. Сейчас пока только остается открыть internal static Foo.Create (хотя делать этого не хочется). Кто-нибудь сталкивался с такой фигнёй?
P.S. Выше я писал, что код максимально упрощен - оставлена только структура (расположение по проектам, квалификаторы видимости) мемберов. Так вот, в такой упрощенной форме проект собирается. В нормальной рабочей - нет.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / error CS0234: The type or namespace name ... does not exist in the namespace ... / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]