Использование типа enum внутри интерфейса в C # - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть метод типа IEnumerable в одном из моих классов:

protected virtual IEnumerable<T> GetSomething(CrudOptions crudOptions)
{
    ...
}

Где-то в решении я определил CrudOptions как:

namespace myProject.Enums 
{ 
    public enum CrudOptions { Delete, Update, Read, Create }
}

Когда я пытаюсьдобавьте метод в моем классе к уже существующему классу интерфейса, он говорит мне, что я не могу сделать это, потому что тип или пространство имен CrudOptions не могут быть найдены.Это то, что я добавляю в класс интерфейса:

IEnumerable<SomeTypeClass> GetSomething(CrudOptions crudOptions);

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

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Я думаю - как и другие говорили вам - может быть несколько проблем:

  • Тип дубликата перечисления - решение: используйте полное имя
  • Проект без ссылки с типом enum - Решение: добавить ссылку на проект с типом enum
  • Не построенный проект -Решение: построить проект
  • Последнее, что я могу себе представить, это то, что вам нужно очистить двоичные файлы - Решение: удалить bin, obj папки в проектах и ​​перестроить

Это в основном обобщение всех ответов выше. Надеется на эту помощь.

0 голосов
/ 15 сентября 2018

Судя по вашим комментариям, представляется, что перечисление CrudOptions не определено в том же проекте, в котором у вас есть метод GetSomething, и похоже, что последний проект не имеет прежний проект в качестве ссылки.Проект, который имеет GetSomething, должен ссылаться на проект, который определяет CrudOptions.

. Чтобы добавить ссылку на проект, перейдите в Solution Explorer, разверните проект, который имеет GetSomething, щелкните правой кнопкой мыши References и выберитеAdd reference..., выберите вкладку Projects слева в окне Reference Manager, установите флажок рядом с проектом, который определяет CrudOptions, и нажмите OK.

После этого в GetSomething посмотрите, можете ли вы скомпилировать, используя полное имя типа myProject.Enums.CrudOptions.

0 голосов
/ 14 сентября 2018

Да, вы не используете правильное пространство имен.измените его как

IEnumerable<SomeTypeClass> GetSomething(myProject.Enums.CrudOptions crudOptions);

Опять же, если это определено в другой сборке, вы должны ссылаться на эту сборку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...