flyNflip
flyNflip

Reputation: 489

Why can't I declare a using statement for a namespace, but can directly declare the namespace before the type?

I'm wondering if someone has seen this scenario before or has any suggestions to what might be causing it. I have a custom class called Dashboard that exists inside a project called Dashboard.Data.Client. Within that same project, if I try to reference the class's namespace such as:

using Alliance.Dashboard.Data.Client.Models;

then I cannot use the type Dashboard. However, anywhere I need to use Dashboard, I can type out the fully qualified name and it works fine. Example:

Alliance.Dashboard.Data.Client.Models.Dashboard myDashboard = new Alliance.Dashboard.Data.Client.Models.Dashboard();

A few notes I'm sure you will be wondering:

  1. If I just type Dashboard in a class, and then try to resolve it, the option isn't available.

  2. I have seen this issue before if there are conflicting namespaces. In such case, a fully qualified name must be given. That is not the case here. There is no conflicting namespaces.

  3. Other classes resolve just fine within this project. As a matter of fact, here is a scenario: from IDashboardRepository this problem exists trying to declare Dashboard just as I described. IDashboardRepository is in the same project but in a different namespace: Alliance.Dashboard.Data.Client.Interfaces. However, the reverse works fine. In other words, I can use the interface namespace as a using statement within Dashboard, but not Dashboard inside the interface without the fully qualified name.

For reference, here is the code for my Dashboard class:

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; }
    }
}

Upvotes: 0

Views: 529

Answers (1)

flyNflip
flyNflip

Reputation: 489

Well, I feel pretty stupid on this one. Simply put, the namespace and class name are the same. The compiler thinks that I have entered the beginning of the namespace directory instead of the class name. Thanks again for taking time to help another knuckle head.

Upvotes: 3

Related Questions