Я думаю, что вы спрашиваете, что означает ключевое слово const . Если нет, пожалуйста, уточните свой вопрос.
Мне нравится думать, что любая переменная const может храниться в ПЗУ (постоянная память), а переменные, которые не объявлены как const, могут храниться в ОЗУ (оперативное запоминающее устройство). Этот тип зависит от типа компьютера, с которым вы работаете, поэтому данные const на самом деле могут не храниться в ПЗУ, но это может быть так.
Таким образом, вы можете делать с указателем все что угодно, но не можете изменять данные в памяти, на которую он указывает.
Это означает, что вы можете ссылаться на указатель и передавать его столько раз, сколько захотите. Также вы можете назначить другое значение указателю.
Скажем, у вас есть этот код
const char* foo = "hello";
const char* bar = "world";
Это совершенно законно делать
foo = bar;
Теперь обе точки указывают «мир»
Это также законно делать [1111 ]
const char *myPtr = bar;
myPtr = foo;
То, что вам не разрешено делать, это изменять фактическую память данных, чтобы вам было запрещено это делать
foo[0] = 'J';
Даже мысль, канонический пример использования для 'DTO' является большим количеством "сериализуемого объекта, который может быть передан по проводу", в этом случае Вы действительно обращаетесь больше к 'объектам передачи презентации' или 'моделям представления'.
Обычно для наших проектов ответ туда, где они живут, - то, где код 'перевода' - то, который отображает модель предметной области DDD на классы PTO. Если это находится в уровне Prensenation (возможно, не настолько большой ответ) затем, слой президента - то, где я объявил бы PTOs. Но как правило, это - 'Сервис', который делает перевод для Вас, и это означает, что для и 'Сервиса' и уровня 'Presentation' нужны ссылки на PTOs и который (обычно) приводит к их объявлению в отдельном, нейтральном project/assembly/namespace/whatever, что И уровень представления И уровень служб могут затем сослаться.
Вы используете практическую эксплуатацию (сеть или WCF)? Если так, затем определите DTOs на уровне служб и прокси, созданном, когда Вы добавите сервис (или сеть при использовании старого ASMX), ссылка будет содержать все типы DTO. Это - самый простой способ сделать это и поддерживает только слабую связь между Вашим проектом ASP.NET и Вашим сервисным проектом - никакая прямая ссылка проекта не требуется ни в одном направлении. Поскольку Вы обновляете свой DTOs, все, что необходимо сделать, обновить сервисную ссылку, и это автоматически выставит обновления веб-проекта через прокси-класс, который сгенерирован.
В любом случае, если Вы следуете, что-то как подход DDD лучше иметь Ваши инфраструктурные проекты (такие как определенный для веб-платформы UI) ссылка на Ваши объекты области, чем наоборот. Если Вы последуете моему совету выше, однако, то Ваш веб-проект не будет иметь прямой зависимости от проекта вообще, который является хорошей вещью, и конечно лучше, чем наличие Ваших богатых объектов области в зависимости от Вашего веб-проекта (если это было даже соображением - я понимаю, что Вы не говорили выполнение этого).
Если бы Ваши DTOs являются определенными для представления, то я включал бы их в Ваш проект UI. Это должно действительно быть задание контроллера, чтобы гарантировать, что Представление только получает из Модели, в чем это нуждается - в Вашем случае объект значения только с полями, необходимыми представлению.