具有泛型类型的泛型类型争论类参数Subclass

时间:2016-06-06 06:54:37

标签: c# class generics generic-programming generic-type-argument

我有一个泛型类,如下所示:

public class Test<T> {
    /*
       Some Properties and Fields
    */
}

现在我在Test {T}类中需要一个公共属性SubTest {T},其数据类型为Test {T}

public class Test<T> {
    /*
       Some Properties and Fields
    */
    public Test<T> SubTest { get; set; }
}

T和U的数据类型不同,SubTest可以为null。 这可能在C#中吗?

更新 或者喜欢这个?

public class Test {
    /*
       Some Properties and Fields
    */
    public Type ElementType { get; private set; }
    public Test SubTest { get; set; }

    public Test(Type elementType) {
        ElementType = elementType;
    }
}

2 个答案:

答案 0 :(得分:2)

它没有定义所以不能像它那样使用。您需要在类中创建type参数,或使用特定类型,例如public class Test<T, U> { /* Some Properties and Fields */ public Test<T,U> SubTest { get; set; } }

{{1}}

答案 1 :(得分:0)

你的问题有点不一致:

  

现在,我需要使用数据类型在测试{ T }类中使用公共属性子测试{ T }   测试{的Ť}

但是你的例子不同了,现在已经添加了U.

public class Test<T> 
{
    public Test<U> SubTest { get; set; }
}

所以按原样回答你的问题,用T代替U:

public class Test<T> 
{
    public Test<T> SubTest { get; set; }
}

我认为你要做的是创建一个通用的“测试”对象,然后有多个实现(使用不同的类型)。我会使用接口,但它与类的概念相同。

public interface ITest
{
    // general test stuff
}

// Type-specific stuff
public interface ITesty<T> : ITest
{
     public ITest SubTest { get; set; }    // a sub-test of any type
}