C# 作为类属性(或类构造函数中的属性)的泛型接口
我有一个现有的通用接口,如下所示:C# 作为类属性(或类构造函数中的属性)的泛型接口,c#,.net,generics,C#,.net,Generics,我有一个现有的通用接口,如下所示: public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new() { ... 公共接口IWorkflowValidator,其中T:IPersistent,IStateful,new() { ... 问题是,我希望将这个通用接口作为另一个名为WorkflowService的类的属性,或者作为WorkflowService类构造函数中
public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new()
{
...
公共接口IWorkflowValidator,其中T:IPersistent,IStateful,new()
{
...
问题是,我希望将这个通用接口作为另一个名为WorkflowService的类的属性,或者作为WorkflowService类构造函数中的属性。当我像下面的构造函数示例中那样做时,编译器会抱怨-我相信我的T位有问题(尽管我可能在那里出错)
e、 g.WorkflowService构造函数
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator<T> workflowValidator) where T: IPersistent, IStateful
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator),其中T:IPersistent,IStateful
{
如果要将泛型接口传递到类中,必须将泛型参数添加到类中
public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new() { }
public class WorkflowService<T> where T: IPersistent, IStateful, new()
{
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator<T> workflowValidator)
{ }
}
公共接口IWorkflowValidator,其中T:IPersistent,IStateful,new(){}
公共类工作流服务,其中T:IPersistent,IStateful,new()
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator)
{ }
}
或者,您可以创建接口的非泛型版本(泛型版本的基础),并在创建实现接口泛型版本的类实例时指定类型
public interface IWorkflowValidator { }
public interface IWorkflowValidator<T> : IWorkflowValidator
where T : IPersistent, IStateful, new() { }
public class WorkflowService
{
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator workflowValidator) { }
}
公共接口IWorkflowValidator{}
公共接口IWorkflowValidator:IWorkflowValidator
其中T:IPersistent,IStateful,new(){}
公共类工作流服务
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator){}
}
如果要将泛型接口传递到类中,必须将泛型参数添加到类中
public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new() { }
public class WorkflowService<T> where T: IPersistent, IStateful, new()
{
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator<T> workflowValidator)
{ }
}
公共接口IWorkflowValidator,其中T:IPersistent,IStateful,new(){}
公共类工作流服务,其中T:IPersistent,IStateful,new()
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator)
{ }
}
或者,您可以创建接口的非泛型版本(泛型版本的基础),并在创建实现接口泛型版本的类实例时指定类型
public interface IWorkflowValidator { }
public interface IWorkflowValidator<T> : IWorkflowValidator
where T : IPersistent, IStateful, new() { }
public class WorkflowService
{
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator workflowValidator) { }
}
公共接口IWorkflowValidator{}
公共接口IWorkflowValidator:IWorkflowValidator
其中T:IPersistent,IStateful,new(){}
公共类工作流服务
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator){}
}
如果要将泛型接口传递到类中,必须将泛型参数添加到类中
public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new() { }
public class WorkflowService<T> where T: IPersistent, IStateful, new()
{
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator<T> workflowValidator)
{ }
}
公共接口IWorkflowValidator,其中T:IPersistent,IStateful,new(){}
公共类工作流服务,其中T:IPersistent,IStateful,new()
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator)
{ }
}
或者,您可以创建接口的非泛型版本(泛型版本的基础),并在创建实现接口泛型版本的类实例时指定类型
public interface IWorkflowValidator { }
public interface IWorkflowValidator<T> : IWorkflowValidator
where T : IPersistent, IStateful, new() { }
public class WorkflowService
{
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator workflowValidator) { }
}
公共接口IWorkflowValidator{}
公共接口IWorkflowValidator:IWorkflowValidator
其中T:IPersistent,IStateful,new(){}
公共类工作流服务
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator){}
}
如果要将泛型接口传递到类中,必须将泛型参数添加到类中
public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new() { }
public class WorkflowService<T> where T: IPersistent, IStateful, new()
{
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator<T> workflowValidator)
{ }
}
公共接口IWorkflowValidator,其中T:IPersistent,IStateful,new(){}
公共类工作流服务,其中T:IPersistent,IStateful,new()
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator)
{ }
}
或者,您可以创建接口的非泛型版本(泛型版本的基础),并在创建实现接口泛型版本的类实例时指定类型
public interface IWorkflowValidator { }
public interface IWorkflowValidator<T> : IWorkflowValidator
where T : IPersistent, IStateful, new() { }
public class WorkflowService
{
public WorkflowService(ControllerAccess controllerAccess, IValidationDictionary validatonDictionary, IWorkflowValidator workflowValidator) { }
}
公共接口IWorkflowValidator{}
公共接口IWorkflowValidator:IWorkflowValidator
其中T:IPersistent,IStateful,new(){}
公共类工作流服务
{
公共工作流服务(ControllerAccess ControllerAccess、IValidationDictionary ValidationDictionary、IWorkflowValidator workflowValidator){}
}
如果要在接受为构造函数参数的IWorkflowValidator
上设置泛型约束,则必须使类本身泛型,并将约束添加到类的泛型类型参数中,如下所示:
public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new()
{
}
public class WorkflowService<T> where T : IPersistent, IStateful, new()
{
private readonly IWorkflowValidator<T> _validator;
public WorkflowService(IWorkflowValidator<T> validator)
{
_validator = validator;
}
public IWorkflowValidator<T> Validator
{
get { return _validator; }
}
}
公共接口IWorkflowValidator,其中T:IPersistent,IStateful,new()
{
}
公共类工作流服务,其中T:IPersistent,IStateful,new()
{
专用只读IWorkflowValidator\u验证程序;
公共工作流服务(IWorkflowValidator验证程序)
{
_验证器=验证器;
}
公共IWorkflowValidator验证程序
{
获取{return\u validator;}
}
}
如果要在接受为构造函数参数的IWorkflowValidator
上设置泛型约束,则必须使类本身泛型,并将约束添加到类的泛型类型参数中,如下所示:
public interface IWorkflowValidator<T> where T : IPersistent, IStateful, new()
{
}
public class WorkflowService<T> where T : IPersistent, IStateful, new()
{
private readonly IWorkflowValidator<T> _validator;
public WorkflowService(IWorkflowValidator<T> validator)
{
_validator = validator;
}
public IWorkflowValidator<T> Validator
{
get { return _validator; }
}
}
公共接口IWorkflowValidator,其中T:IPersistent,IStateful,new()
{
}
公共类工作流服务,其中T:IPersistent,IStateful,new()
{
专用只读IWorkflowValidator\u验证程序;
公共工作流服务(IWorkflowValidator验证程序)
{
_验证器=验证器;
}
公共IWorkflowValidator验证程序
{
获取{return\u validator;}
}
}
如果要在IWorkflowValidator上设置常规约束