Класс App должен отображать вещи, которые только относятся к проекту приложения. Как только вы поняли, что хотите, чтобы эти вещи были доступны в B.dll, они стали важны не только для проекта приложения и, следовательно, больше не принадлежат проекту приложения.
Разумным подходом может быть добавление класса в B.dll, который несет эти вещи в качестве статических свойств. Другим распространенным шаблоном является наличие Current
статического свойства.
public MyClass
{
private static MyClass _current = new MyClass();
public static MyClass Current { get { return _current; } }
public string SomeInstanceValue { get; set; }
}
И A, и B получат доступ к вещам, используя шаблон var x = MyClass.Current.SomeInstanceValue
. Преимущество этого подхода заключается в том, что он позволяет получателю свойства Current
определять, доступен ли «текущий» экземпляр или нет.
Вы также можете просмотреть документацию по ApplicationLifeTimeObjects .