Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 作为类属性(或类构造函数中的属性)的泛型接口_C#_.net_Generics - Fatal编程技术网

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上设置常规约束