如何將變量實體傳遞給泛型函數?


如果我通過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
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因