Как я могу скрыть «сеттеры» от всех, кроме одной сборки?
Я упомянул эту проблему вмой другой вопрос, но я думаю, что стоит разобрать его на свой собственный вопрос, так как на самом деле это не зависит от других сценариев, которые я упомянул.
В любом случае - на Q, не знаю, возможно ли это. Ищете решение / обходной путь.
У меня есть библиотека классов, только с POCO:
MyCompany.MyProject.Domain.POCO
Эта сборка имеет POCO, как это:
public class Post
{
public int PostId { get; set; }
public int Name { get; set; }
...
}
Теперь у меня есть другая библиотека классов, которая является моим DAL / Repository и использует Entity Framework 4.0 для сохранения:
MyCompany.MyProject.Repositories
Эта сборка имеет ссылку на проект POCO, поскольку она должна выполнять CRUD-операции над POCO (захватывать объекты БД, проектировать в POCO, возвращать, а также изменять POCO).
Теперь у меня также естьВеб приложение, который имеет ссылку как на сборку POCO, так и на сборку репозитория.
Если я сделаю это:
somePOCO.PostId = 10;
Я получаю SQLException, каксообщения дан является полем IDENTITY в базе данных, и, следовательно, не должно быть задано явно.
Есть ли способ, которым я могускрывать установщик для этих специальных свойств, так что только хранилище имеет доступ к установщику?
Я не могу придумать способ сделать это с помощью обычных модификаторов доступности (поскольку ни один из них не подходит для сценария), вы, ребята, можете придумать обходной путь?