如何将变量实体传递给泛型函数?

.net c# entity-framework entity-framework-plus generics

如果我通过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是)以动态执行它。

但是,如果您想要一个完全灵活的解决方案,您可以根据元数据调用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 with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因