Вы, похоже, используете DataStructures
как некое глобальное хранилище. Я не знаю, что вы там храните, поэтому я предполагаю, что у вас есть веские причины для этого глобального хранилища.
Если это так, я бы заменил каждый список новым типом объекта, который занимается добавлением данных и выполняет соответствующие проверки.
Что-то вроде:
interface IObjectStorage
{
void Add(object obj);
void Remove(object obj);
}
Каждый тип хранилища объектов будет происходить из этого и обеспечивать свою собственную логику. Или это может происходить из Collection<T>
или чего-то подобного, если семантика коллекции имеет смысл. Поскольку ваш пример прямо сейчас, я не вижу использования для ObjectFeed, он служит средством доступа к причудливым свойствам.
Выбор свойства для доступа через строку звучит для меня странно. Это очень склонно к опечаткам; Я бы предпочел использовать Type
-объекты, доступные из любого объекта в C # через конструкцию GetType-method
или typeof()
.
Тем не менее. Вся установка кажется мне немного неправильной, DataStructures
и др.
Во-первых, тестирование вашего статического класса будет трудным. Я бы передал эти магазины тем типам, которые в них нуждаются. Заменить их другими вещами также будет сложно, использование интерфейсов по крайней мере не привязывает вас к конкретной реализации, но что, если вы хотите использовать другое место для хранения объектов в другом коде? Ваш статический класс больше не актуален, и вам нужно будет изменить много кода.
Может быть, эти вещи находятся вне вашего контроля, я не знаю, пример кода немного расплывчат в этом смысле.