#c# #.net
#c# #.net
Вопрос:
Мне интересно, видел ли кто-нибудь этот сценарий раньше или имеет какие-либо предложения относительно того, что может быть причиной этого. У меня есть вызываемый пользовательский класс Dashboard
, который существует внутри вызываемого проекта Dashboard.Data.Client
. В том же проекте, если я попытаюсь сослаться на пространство имен класса, например:
using Alliance.Dashboard.Data.Client.Models;
тогда я не могу использовать тип Dashboard
. Однако в любом месте, которое мне нужно использовать Dashboard
, я могу ввести полное имя, и оно отлично работает. Пример:
Alliance.Dashboard.Data.Client.Models.Dashboard myDashboard = new Alliance.Dashboard.Data.Client.Models.Dashboard();
Несколько замечаний, я уверен, вам будет интересно:
-
Если я просто ввожу
Dashboard
класс, а затем пытаюсь его разрешить, опция недоступна. -
Я уже сталкивался с этой проблемой раньше, если существуют конфликтующие пространства имен. В таком случае должно быть указано полное имя. Здесь это не так. Конфликтующих пространств имен нет.
-
Другие классы отлично разрешаются в этом проекте. На самом деле, вот сценарий: из
IDashboardRepository
этой проблемы существует попытка объявитьDashboard
так, как я описал.IDashboardRepository
находится в том же проекте, но в другом пространстве имен :Alliance.Dashboard.Data.Client.Interfaces
. Однако обратное работает нормально. Другими словами, я могу использовать пространство имен интерфейса в качестве оператора using внутриDashboard
, но неDashboard
внутри интерфейса без полного имени.
Для справки, вот код для моего Dashboard
класса:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Alliance.Dashboard.Data.Client.Models
{
public class Dashboard
{
public System.Guid DashboardID { get; set; }
public string DashboardName { get; set; }
public byte[] Instance { get; set; }
public bool IsDeleted { get; set; }
public byte[] Concurrency { get; set; }
}
}
Комментарии:
1. «тогда я не могу использовать панель управления типами» — какую ошибку компилятора вы получаете при попытке?
2. Что еще более важно, можете ли вы привести короткий воспроизводимый пример?
3. Есть ли у вас другой класс или что-либо еще, вызываемое
Dashboard
в вашем текущем пространстве имен или другом использовании импорта? Вы должны явно указать, какой из них вы хотите использовать, если он неоднозначен. Единственный способ обойти это — использовать псевдонимы этих обманщиков в using .4. См: blogs.msdn.com/b/ericlippert/archive/2010/03/09/…
5. Черт возьми. Как я, черт возьми, это пропустил? Я собираюсь спрыгнуть с долбаного моста. Вы можете серьезно начать говорить обо мне в прошедшем времени. Вы, ребята, сразу привели меня к этому. Проблема в том, что имя класса и имя проекта идентичны. Компилятор думает, что я начал вводить начало пространства имен вместо имени класса. Я долбаный идиот. Извините за беспокойство.
Ответ №1:
Ну, я чувствую себя довольно глупо в этом вопросе. Проще говоря, пространство имен и имя класса совпадают. Компилятор думает, что я ввел начало каталога пространства имен вместо имени класса. Еще раз спасибо, что нашли время, чтобы помочь другому недотепе.