C# 如何将变量实体传递给泛型函数?
如果我通过生成实体,我想使用这样的函数:C# 如何将变量实体传递给泛型函数?,c#,.net,entity-framework,generics,entity-framework-plus,C#,.net,Entity Framework,Generics,Entity Framework Plus,如果我通过生成实体,我想使用这样的函数: AuditManager.DefaultConfiguration.Exclude<T>(); AuditManager.DefaultConfiguration.Exclude(); 考虑到我想调用它的次数应该等于实体的数量 例: AuditManager.DefaultConfiguration.Exclude(); AuditManager.DefaultConfiguration.Exclude(); AuditManager.D
AuditManager.DefaultConfiguration.Exclude<T>();
AuditManager.DefaultConfiguration.Exclude();
考虑到我想调用它的次数应该等于实体的数量
例:
AuditManager.DefaultConfiguration.Exclude();
AuditManager.DefaultConfiguration.Exclude();
AuditManager.DefaultConfiguration.Exclude();
现在,如何循环选定数量的实体并将每个实体传递给
Exclude
函数?显而易见的解决方案是为每个要隐藏的实体类型调用该方法。像这样:
AuditManager.DefaultConfiguration.Exclude<Employee>();
AuditManager.DefaultConfiguration.Exclude<Department>();
AuditManager.DefaultConfiguration.Exclude<Room>();
这假设
Exclude
方法是实例DefaultConfiguration
指向的任何对象上的实例方法。显而易见的解决方案是为要隐藏的每个实体类型调用该方法。像这样:
AuditManager.DefaultConfiguration.Exclude<Employee>();
AuditManager.DefaultConfiguration.Exclude<Department>();
AuditManager.DefaultConfiguration.Exclude<Room>();
这假设
Exclude
方法是实例DefaultConfiguration
指向的任何对象上的实例方法。循环实体类型的另一种方法是使不希望审核的实体实现相同的接口并将其排除。例如:
public interface IExcludeFromAudit
{ }
以及您的实体:
public class Order : IExcludeFromAudit
{
//snip
}
现在只需排除接口:
AuditManager.DefaultConfiguration.Exclude<IExcludeFromAudit>();
AuditManager.DefaultConfiguration.Exclude();
这样做的好处是,现在可以很容易地控制哪些实体被排除在外。通过实体类型循环的另一种方法是使您不希望审计的实体实现相同的接口并排除该接口。例如:
public interface IExcludeFromAudit
{ }
以及您的实体:
public class Order : IExcludeFromAudit
{
//snip
}
现在只需排除接口:
AuditManager.DefaultConfiguration.Exclude<IExcludeFromAudit>();
AuditManager.DefaultConfiguration.Exclude();
这样做的好处是,现在可以很容易地控制哪些实体被排除在外。您不是将实体传递给泛型函数,而是将实体类型传递给泛型函数。@Maarten:U是的,如何创建实体类型列表并将项传递给泛型函数?这听起来像是一个X-Y问题,你到底想在这里实现什么?@Maarten:它尝试以下
List types=new List();类型。添加(类型(员工))代码>但不能将类型[0]
用作函数parameter@DavidG:我想控制应该通过该功能排除的实体,管理员用户应该选择实体集,我想将这些实体传递到排除功能
以将其排除在审核之外您没有将实体传递到通用功能,您正在将实体类型传递给泛型函数。@Maarten:U是对的,如何创建实体类型列表并将项传递给泛型函数?这听起来像是一个X-Y问题,您到底想在这里实现什么?@Maarten:it尝试以下list types=new list();类型。添加(类型(员工))代码>但不能将类型[0]
用作函数parameter@DavidG:我想控制应该通过该功能排除的实体,管理员用户应该选择实体集,我想将这些实体传递到排除功能
以将其排除在审核之外