Я не уверен, где / как искать этот вопрос, поэтому я подумал, что лучше всего задать вопрос о комманде stackoverflow.
По сути, я разрабатываю проект, который просто предоставит логическому проекту доступ кМодель LINQ to SQL для выполнения CRUD для базы данных.Итак, в рамках проекта Data у меня есть класс модели LINQ to SQL и класс C # для обеспечения доступа к модели, как показано ниже
public class Connection : IDisposable
{
private DataModelDataContext _model;
public DataModelDataContext model
{
get { return _model; }
set { throw new Exception("Object \"model\" is not allowed to be created outside of its container class", new NotSupportedException()); }
}
public Connection(string username, string password)
{
User u = _model.Users.Where(u => u.Username == username && u.password == u.Password);
if (u == null)
throw new ApplicationException("User credentials are invalid", new AuthenticationException());
_model = new DataModelDataContext();
}
public void refreshAndKeepChanges(object entity)
{
_model.Refresh(RefreshMode.OverwriteCurrentValues, entity);
}
public int getChangesCount()
{
return _model.GetChangeSet().Deletes.Count() + _model.GetChangeSet().Inserts.Count() + _model.GetChangeSet().Updates.Count();
}
public void Dispose()
{
_model.SubmitChanges();
_model.Dispose();
}
}
Что я хочу, когда я компилирую DLL для проекта логикииметь доступ к классу Connection (см. выше), но не к DataModelDataContext (так как это повредит объекту передачи учетных данных пользователя).
Мой вопрос заключается в том, как предоставить класс Connection (как общедоступный, что я уже сделал) но скрыть модель данных LINQ to SQL из библиотеки DLL, но разрешить доступ к ней класса подключения ???
использование дополнительного пространства имен для модели LINQ to SQL не работает, я обнаружил, что добавление библиотеки DLL позволяет получить доступдля всех пространств имен в проекте.