Добавить ссылку на проект в c # - PullRequest
0 голосов
/ 23 августа 2010

У меня странная проблема.У меня есть решение со следующей структурой

http://i33.tinypic.com/10fbzbq.jpg

Как вы можете видеть, когда я не могу импортировать VDB.Common.RequestAndResponses, он выдает ошибку.Пространство имен библиотеки классов dat VDB.Common.RequestAndResponses.

Я новичок в c #, так что может быть, я забыл что-то глупое.

Ответы [ 4 ]

2 голосов
/ 23 августа 2010

Я сильно подозреваю, что Base.cs (единственный файл C #, показанный в проекте VDB.Common.RequestAndResponses) не на самом деле объявляет тип в пространстве имен VDB.Common.RequestAndResponses - или что он только внутренний (а не публичный ) тип.

Например, обратите внимание, что код, который вы создаете, находится в проекте VDB.Client.Infrastructure, но объявляет только класс в пространстве имен Agatha, а не VDB.Client.Infrastructure.Agatha, что может быть тем, что вы намеревались. Возможно, у вас есть такие же вещи в Base.cs, возможно?

Не видя код в Base.cs, мы не видим, что не так. Если бы вы могли просто опубликовать фрагмент этого - только пространство имен и объявление класса - это было бы полезно.

Обратите внимание, что хотя у библиотеки классов есть пространство имен по умолчанию , это не предшествует тому, что фактически объявляет исходный файл. Другими словами, в библиотеке Acme.Widgets, если у вас было объявление:

namespace Web
{
    public class Button {}
}

, который бы объявлял только тип Web.Button, , а не Acme.Widgets.Web.Button.

РЕДАКТИРОВАТЬ: «ответ» ОП подтверждает то, что я думал ... в основном это не объявляет пространство имен вообще. Это должно выглядеть так:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Agatha.Common;

namespace VDB.Common.RequestAndResponses
{
    public abstract class BaseRequest :Request
    {
        // Code
    }

    public abstract class BaseResponse : Response
    {
        // Code
    }
}

Я бы также настоятельно посоветовал бы поместить эти классы в два отдельных файла, BaseRequest.cs и BaseResponse.cs. Я также очень удивлен, увидев ссылку на Agatha.Common - разве это не должно быть VDB.Common.Agatha или что-то в этом роде?

0 голосов
/ 23 августа 2010

Файл Base.cs выглядит следующим образом.

using System;

    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Agatha.Common;

    public abstract class BaseRequest :Request
        {
        public string UserName { get; set; }
        public string UserDomainName { get; set; }

        public string ClientLanguageCode { get; set; }
        public DateTime ClientCreated { get; set; }
        public DateTime ClientSent { get; set; }
        public DateTime ServerReceived { get; set; }
        public DateTime ServerProcessed { get; set; }

        public void BeforeSend(IUserContext context)
        {
            ClientSent = DateTime.UtcNow;
            UserName = context.UserName;
            UserDomainName = context.UserDomainName;
            ClientLanguageCode = context.LanguageCode;
        } 
    }

public abstract class BaseResponse : Response
{
    public DateTime ServerCreated { get; set; }
    public DateTime ServerProcessed { get; set; }

    public string[] ValidationErrors { get; set; }

    public bool IsValid
    {
        get { return Exception == null & !ValidationErrors.Any(); }
    }

}
0 голосов
/ 23 августа 2010

Попробуйте использовать базовый класс в клиентском коде и наведите на него курсор и позвольте IDE Visual Studio запросить добавление соответствующего пространства имен.Пространство имен, определенное в базовом классе, может отличаться от того, что вы думаете.

РЕДАКТИРОВАТЬ Как показал Джон во 2-й части своего ответа, имя файла кода автоматически не соответствует пространству имен.

0 голосов
/ 23 августа 2010

Щелкните правой кнопкой мыши ссылку «VDB.Common.RequestAndResponses» в обозревателе решений и выберите «Показать в обозревателе объектов», убедитесь, что там найдено пространство имен с точным написанием и прописными буквами.

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