В моем решении у меня есть проект DLL, скажем Project1
, которому принадлежит класс, скажем class A
.Этот класс имеет некоторые свойства, настолько важные, что должны быть установлены только в этой DLL.Любые другие проекты, которые ссылаются на эту DLL, могут использовать только геттеры.До сих пор я справлялся с ситуацией, обращаясь к сеттерам внутри, например:
public class A
{
int Num1
{
get;
internal set;
}
int Num2
{
get;
internal set;
}
}
Сейчас мне нужно добавить еще один проект, Project2
, к решению, которое не только должно использовать class A
(обаgetters и setter) но также, Project1
имеет ссылку на этот новый проект.Поэтому я решил отделить class A
в другом определении dll, на вершине иерархии.В этом и заключается моя проблема.Теперь все сеттеры невидимы для Project1
и Project2
.Если я удалю аксессор internal
, тогда сеттеры будут доступны для любой сборки, которая ссылается на определение dll.Я не хочу этого, потому что информация о class A
так важна, что ее нельзя устанавливать по ошибке.
Как я могу ограничить доступ к сеттерам class A
извне Project1
иProject2
?
Мне приходит в голову только решение использовать InternalsVisibleTo
.Я не знаю, это не звучит идеально.Кроме того, объединение Project1
и Project2
было бы еще одним решением, но эти два отвечают за совершенно разные задачи, это не лучший вариант для разработки.