Как передать переменные объекты в общую функцию?


Вопрос

Если я создаю свои сущности через Entity Framework Database First , и я хочу использовать такую ​​функцию:

AuditManager.DefaultConfiguration.Exclude<T>();

учитывая, что количество раз, которое я хочу назвать, должно быть равно числу объектов

например:

AuditManager.DefaultConfiguration.Exclude<T>();

Теперь как выполнить цикл с помощью выбранного количества объектов и передать все в функцию Exclude ?

Принятый ответ

Очевидным решением будет вызов метода для каждого типа сущности, который вы хотите скрыть. Как это:

AuditManager.DefaultConfiguration.Exclude<Employee>();
AuditManager.DefaultConfiguration.Exclude<Department>();
AuditManager.DefaultConfiguration.Exclude<Room>();

Вы можете добавлять условные операторы ( if s) вокруг них, чтобы сделать это динамически.

В любом случае, если вы хотите полностью гибкое решение, где вы вызываете метод Exclude на основе метаданных, вам нужно что-то еще. Что-то вроде этого:

AuditManager.DefaultConfiguration.Exclude<Employee>();
AuditManager.DefaultConfiguration.Exclude<Department>();
AuditManager.DefaultConfiguration.Exclude<Room>();

Это предполагает, что метод Exclude<T> является методом экземпляра для любого экземпляра DefaultConfiguration .


Популярные ответы

Альтернативой циклов в ваших типах сущностей является создание объектов, которые вы не хотите проверять, реализовать один и тот же интерфейс и исключить это. Например:

public interface IExcludeFromAudit
{ }

И ваши сущности:

public interface IExcludeFromAudit
{ }

И теперь просто исключите интерфейс:

public interface IExcludeFromAudit
{ }

Преимущество этого в том, что теперь легко контролировать, какие из них исключены.





Лицензировано согласно: CC-BY-SA
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему