C# 温莎城堡-卡顿';t满足实现类型的泛型约束

C# 温莎城堡-卡顿';t满足实现类型的泛型约束,c#,generics,interface,castle-windsor,castle,C#,Generics,Interface,Castle Windsor,Castle,我正在使用castle windsor进行依赖注入,并尝试注入一些泛型类型。但是,当我在容器上调用resolve时,会出现以下错误: 类不满足实现类型的泛型约束 在这个例子中,我正在传递一个简单的Car类型 public class CreateRequestInstance<T> where T : class, ICreateRequestInstance<T> { private IRequestObject<T> _IRequestObject

我正在使用castle windsor进行依赖注入,并尝试注入一些泛型类型。但是,当我在容器上调用resolve时,会出现以下错误:

类不满足实现类型的泛型约束

在这个例子中,我正在传递一个简单的
Car
类型

public class CreateRequestInstance<T> where T : class, ICreateRequestInstance<T>
{
    private IRequestObject<T> _IRequestObject;

    public CreateRequestInstance(IRequestObject<T> requestObject)
    {
        this._IRequestObject = requestObject;
    }

    public TReturn CreateRequest<TReturn>(string provider, string type, string token, T request,
        string revision, string errorCode, string errorMessage)
    {
        _IRequestObject.Provider = provider;
        _IRequestObject.Type = type;
        _IRequestObject.Token = token;
        _IRequestObject.Request = request;
        _IRequestObject.ErrorCode = errorCode;
        _IRequestObject.ErrorMessage = errorMessage;

        return (TReturn)Convert.ChangeType(_IRequestObject, typeof(IRequestObject<T>));
    }  
}
public类CreateRequestInstance,其中T:class,ICreateRequestInstance
{
私人IRequestObject_IRequestObject;
公共CreateRequestInstance(IRequestObject requestObject)
{
这是。_IRequestObject=requestObject;
}
public TReturn CreateRequest(字符串提供程序、字符串类型、字符串令牌、T请求、,
字符串修订、字符串错误代码、字符串错误消息)
{
_IRequestObject.Provider=提供程序;
_IRequestObject.Type=Type;
_IRequestObject.Token=Token;
_IRequestObject.Request=请求;
_IRequestObject.ErrorCode=错误代码;
_IRequestObject.ErrorMessage=ErrorMessage;
return(TReturn)Convert.ChangeType(_-IRequestObject,typeof(IRequestObject));
}  
}
这是我的安装程序:

public void Install(IWindsorContainer container, IConfigurationStore store)
{
    container
        .Register(Component
            .For(typeof(ICreateRequestInstance<>))
            .ImplementedBy(typeof(CreateRequestInstance<>))
            .LifestyleTransient())
         .Register(Component
            .For(typeof(ICreateResponseInstance<>))
            .ImplementedBy(typeof(CreateResponseInstance<>))
            .LifestyleTransient())
        .Register(Component
            .For(typeof(IRequestObject<>))
            .ImplementedBy(typeof(RequestObject<>))
            .LifestyleTransient())
        .Register(Component
            .For(typeof(IResponseObject<>))
            .ImplementedBy(typeof(ResponseObject<>))
            .LifestyleTransient());
}
public void安装(IWindsorContainer,IConfigurationStore)
{
容器
.寄存器(组件)
.For(typeof(ICreateRequestInstance))
.ImplementedBy(typeof(CreateRequestInstance))
.LifestyleTransient())
.寄存器(组件)
.For(类型(ICreateResponseInstance))
.ImplementedBy(类型(CreateResponseInstance))
.LifestyleTransient())
.寄存器(组件)
.For(类型(IRequestObject))
.ImplementBy(类型(请求对象))
.LifestyleTransient())
.寄存器(组件)
.For(typeof(IResponseObject))
.实施人(类型(响应对象))
.生活方式(暂时的);
}
这是我的班级工厂电话:

public T GetConcreteClass<T>()
{
    var someClass = container.Resolve<T>();
    return someClass;
}
public T GetConcreteClass()
{
var someClass=container.Resolve();
返回某个类;
}
这是呼叫代码:

var t = factory.GetConcreteClass<ICreateRequestInstance<ICar>>();

var test = t.CreateRequest<ICar>("provide", "test", "test", car, "1", "this is a test", "fred");
var t=factory.GetConcreteClass();
var test=t.CreateRequest(“提供”、“测试”、“测试”、汽车”、“1”、“这是测试”、“弗雷德”);
在此方面的任何帮助都将不胜感激

public class CreateRequestInstance<T> where T : class, ICreateRequestInstance<T>

这是一个实现
ICreateRequestInstance
的类,该类需要任何类的模板参数。

谢谢。我按照你的建议进行了切换,并删除了通用约束,结果成功了
public class CreateRequestInstance<T> : ICreateRequestInstance<T> where T : class