C# 泛型基类,其中T是其他泛型基类

C# 泛型基类,其中T是其他泛型基类,c#,generics,C#,Generics,我有一个抽象的泛型类: public abstract class SomeBaseClass<U,V> { } public abstract class SomeOtherBaseClass<T1, T2> where T1 : SomeBaseClass<U,V> { private readonly T1 _someBaseClass; public SomeOtherBaseClass(T1 someBaseClass)

我有一个抽象的泛型类:

public abstract class SomeBaseClass<U,V>
{
}
public abstract class SomeOtherBaseClass<T1, T2> where T1 : SomeBaseClass<U,V>
{
    private readonly T1 _someBaseClass;

    public SomeOtherBaseClass(T1 someBaseClass)
    {
        _someBaseClass = someBaseClass;
    }
}
公共抽象类SomeBaseClass
{
}
我想创建其他泛型类:

public abstract class SomeBaseClass<U,V>
{
}
public abstract class SomeOtherBaseClass<T1, T2> where T1 : SomeBaseClass<U,V>
{
    private readonly T1 _someBaseClass;

    public SomeOtherBaseClass(T1 someBaseClass)
    {
        _someBaseClass = someBaseClass;
    }
}
公共抽象类SomeOtherBaseClass,其中T1:SomeBaseClass
{
私有只读T1_someBaseClass;
公共SomeOtherBaseClass(T1 someBaseClass)
{
_someBaseClass=someBaseClass;
}
}
我如何才能做到这一点?

公共抽象类SomeOtherBaseClass
public abstract class SomeOtherBaseClass<T1, T2, U, V>
    where T1 : SomeBaseClass<U, V>
其中T1:SomeBaseClass
公共抽象类SomeOtherBaseClass
其中T1:SomeBaseClass

这可能会满足您的需求:

public abstract class SomeOtherBaseClass<U, V, T2> 
{
    private readonly SomeBaseClass<U, V> _someBaseClass;

    public SomeOtherBaseClass(SomeBaseClass<U, V> someBaseClass)
    {
        _someBaseClass = someBaseClass;
    }
}
公共抽象类SomeOtherBaseClass
{
私有只读SomeBaseClass\u SomeBaseClass;
公共SomeOtherBaseClass(SomeBaseClass SomeBaseClass)
{
_someBaseClass=someBaseClass;
}
}

这可能会满足您的需求:

public abstract class SomeOtherBaseClass<U, V, T2> 
{
    private readonly SomeBaseClass<U, V> _someBaseClass;

    public SomeOtherBaseClass(SomeBaseClass<U, V> someBaseClass)
    {
        _someBaseClass = someBaseClass;
    }
}
公共抽象类SomeOtherBaseClass
{
私有只读SomeBaseClass\u SomeBaseClass;
公共SomeOtherBaseClass(SomeBaseClass SomeBaseClass)
{
_someBaseClass=someBaseClass;
}
}
公共抽象类SomeOtherBaseClass,其中T1:SomeBaseClass
公共抽象类SomeOtherBaseClass,其中T1:SomeBaseClass

SomeBaseClass
没有将其第一个类型参数
U
定义为自反,因此这是不正确的。此外,OP没有指出两个基类的类型参数是相关的。
SomeBaseClass
没有将其第一个类型参数
U
定义为自反的,因此这是不正确的。此外,OP没有指出这两个基类的类型参数是相关的。