Ссылка на тип, определенный в другом проекте в Visual Studio 2010 / C # - PullRequest
0 голосов
/ 15 июля 2011

У меня есть тип с фиксированной точкой по типу подкласса (см. этот пост ).Я мог бы построить этот проект с именем a.dll.

namespace System
{
public class FixedPointDataType : Type
{
    public Boolean Signed { get; set; }
    public int Width { get; set; }
    public int IntegerWidth { get; set; }
    public FixedPointDataType(Boolean signed = false, int width = 16, int integerWidth = 8)
    {
        Signed = signed;
        Width = width;
        IntegerWidth = integerWidth;
    }
...

У меня есть другой проект b.dll, который использует System.FixedPointDataType, который находится в a.dll.После ссылки на a.dll в проекте b, когда я попытался скомпилировать файл abc.cs в проекте b, я получил эту ошибку.

Error   2   'System.FixedPointDataType' is inaccessible due to its protection level 
abc.cs

Что может быть не так?

ДОБАВЛЕНО

Мне нужно было добавить public и дать полное имя с пространствами имен - System.FixedPointDataType.Я получил ошибку даже после модификации, но когда я перестроил все решение, и ошибка была удалена.Спасибо за комментарии и ответы.

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Ваш класс не объявлен public;или это было до того, как вы изменили свое сообщение и перестроили проект.

Но я поддерживаю предыдущие комментарии, что вы должны не подкласс Type или добавить членов в пространство имен System.

Если два проекта находятся в одном решении, убедитесь, что вы добавили ссылку на проект, а не только на DLL, являющуюся выходом проекта.Если вы не добавите ссылку на проект, VS не будет знать, в каком порядке строить ваше решение, и вы можете ссылаться на устаревшие версии.

1 голос
/ 15 июля 2011

Ваш другой пост не сообщает нам, какое пространство имен вы использовали для своего класса FixedPoint.

Я бы посоветовал вам использовать оператор Using или полностью указать имя типа.

РЕДАКТИРОВАТЬ: Ох, плохое время с моей стороны!

Если код, который вы описали выше, является точным (уверен, что вы не пропускаете 'public' из класса?), Возможно, это проблема стот факт, что вы используете пространство имен System, которое, хотя у меня нет доказательств, может быть особым случаем.

Посмотрите, что произойдет, если вы измените пространство имен.

...