Вопрос:

не может ссылаться на класс из другого проекта того же решения

c#

4669 просмотра

3 ответа

8808 Репутация автора

Мое решение содержит несколько проектов, включая Commonsи TerminatorConsole2. Теперь я хочу сослаться на Commons.Constantsкласс из TerminatorConsole2.Utils.Constantsфайла:

namespace TerminatorConsole2.Utils
{
    class Constants
    {
        public const string MANAGEMENT_CONSOLE_ADDRESS =
            Commons.Constants.USE_EXTRA_WCF_INSTANCE ?
                "net.pipe://localhost/xxx" :
                "net.pipe://localhost";

Но я получаю «Не удается разрешить символ» на «Общих». Добавление "использование Commons" не помогает, я получаю ту же ошибку.

Почему один проект не может использовать класс из другого проекта того же решения?

UPD Добавление Constantsкласса. Однако я уже использую его из другого проекта, поэтому я думаю, что этот класс в порядке:

namespace Commons
{

public class Constants
{
    public const int MAX_INSTRUMENTS_NUMBER_IN_SYSTEM = 200;
    public const bool USE_EXTRA_WCF_INSTANCE = true;
}

}
Автор: javapowered Источник Размещён: 06.10.2012 09:00

Ответы (3)


1 плюс

130960 Репутация автора

По умолчанию область действия класса является внутренней, что означает, что к этой сборке можно обращаться. Сделайте класс общедоступным, чтобы сделать его доступным для других сборок. Подробнее о модификаторах доступа Также убедитесь, что вы добавили ссылку на сборку, на которую вы ссылаетесь.

+ Изменить

class Constants
    {
        public const string MANAGEMENT_CONSOLE_ADDRESS =
            Commons.Constants.USE_EXTRA_WCF_INSTANCE ?
                "net.pipe://localhost/xxx" :
                "net.pipe://localhost";

к

public class Constants
    {
        public const string MANAGEMENT_CONSOLE_ADDRESS =
            Commons.Constants.USE_EXTRA_WCF_INSTANCE ?
                "net.pipe://localhost/xxx" :
                "net.pipe://localhost";
Автор: Adil Размещён: 06.10.2012 09:01

0 плюса

22973 Репутация автора

Попробуйте это: добавить publicв классConstants

namespace TerminatorConsole2.Utils
{
    public class Constants
    {
        public const string MANAGEMENT_CONSOLE_ADDRESS =
            Commons.Constants.USE_EXTRA_WCF_INSTANCE ?
                "net.pipe://localhost/xxx" :
                "net.pipe://localhost";
    }
 }
Автор: codingbiz Размещён: 06.10.2012 09:08

1 плюс

8808 Репутация автора

Решение

jeroenh правильно ответил на вопрос в комментарии ... Мне нужно было добавить ссылку.

Мне не нужно было объявлять класс public, так как только используемый класс должен быть открытым. класс, который "используя" не должен быть публичным.

Автор: javapowered Размещён: 06.10.2012 09:20
Вопросы из категории :
32x32