Почему PropertyInfoManager не содержится в BusinessBase, как FieldManager? - PullRequest
1 голос
/ 28 февраля 2011

Я знаю, что FieldManager предоставляется как защищенное свойство в BusinessBase.Почему PropertyInfoManager не настроен так же?Из того, что я могу собрать, PropertyInfoManger поддерживает словарь типов и список PropertyInfo (ов) каждого типа.Казалось бы, проще иметь список PropertyInfo, который поддерживается в BusinessBase, подобно тому, как работает FieldManager.В PropertyInfoManager проделана большая работа, чтобы связать PropertyInfo, зарегистрированную с типом, к которому они принадлежат.

Я уверен, что есть причина для этого, и я просто не вижу ее или недостаточно понимаю,Я просто пытаюсь узнать больше о CSLA и о том, почему все было так, как было.

1 Ответ

0 голосов
/ 28 февраля 2011

Есть две основные причины, по которым я могу это сделать:

1) Потокобезопасность - класс PropertyInfoManager представляет собой статическую оболочку вокруг словаря, которая позволяет регистрировать PropertyInfo (s) для типа иПолучите PropertyInfo (s) для Типа.Он обеспечивает блокировку для обеспечения безопасности потока.

2) Отмена N-уровня - эта функция CSLA значительно усложняет хранение значений полей, а защищенный FieldManager отвечает за поддержание значений всех управляемых полей поддержки дляBusinessBase.Для этого классу FieldDataManager необходим доступ к PropertyInfo (ам) типа, поэтому лучше использовать их в одном месте, а не передавать какой-либо список из BusinessBase.

В этом случае FieldDataManager и PropertyInfoManagerклассы добавляют модульность, и я уверен, что на них повлияли разделение интересов (SoC) и принцип единой ответственности (SRP).

Я также изучаю CLSA и при этом довольно много узнал оОбъектно-ориентированный дизайн от самого фреймворка.Я бы порекомендовал The Book и чтение Исходный код , чтобы продолжить изучение CSLA .Net.

...