Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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#_Class_Generics_Generic Programming_Generic Type Argument - Fatal编程技术网

C# 具有泛型类型参数化子类的泛型类型参数化类

C# 具有泛型类型参数化子类的泛型类型参数化类,c#,class,generics,generic-programming,generic-type-argument,C#,Class,Generics,Generic Programming,Generic Type Argument,我有一个类具有泛型类型,如下所示: public class Test<T> { /* Some Properties and Fields */ } U未定义它,因此不能像那样使用。您需要在类中创建类型参数,或使用特定类型,例如string: public class Test<T, U> { /* Some Properties and Fields */ public Test&

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

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

U未定义它,因此不能像那样使用。您需要在类中创建类型参数,或使用特定类型,例如
string

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

      public Test<T,U> SubTest { get; set; }
    }
公共类测试{
/*
一些属性和字段
*/
公共测试子测试{get;set;}
}

U未定义它,因此不能像使用。您需要在类中创建类型参数,或使用特定类型,例如
string

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

      public Test<T,U> SubTest { get; set; }
    }
公共类测试{
/*
一些属性和字段
*/
公共测试子测试{get;set;}
}

你的问题有点前后矛盾:

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

但您的示例不同,现在添加了U

public class Test<T> 
{
    public Test<U> SubTest { get; set; }
}
公共类测试
{
公共测试子测试{get;set;}
}
因此,要按原样回答您的问题,请将U替换为T:

public class Test<T> 
{
    public Test<T> SubTest { get; set; }
}
公共类测试
{
公共测试子测试{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
}
公共接口测试
{
//一般测试材料
}
//特定类型的东西
公共接口ITesty:ITest
{
公共ITest子测试{get;set;}//任何类型的子测试
}

你的问题有点前后矛盾:

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

但您的示例不同,现在添加了U

public class Test<T> 
{
    public Test<U> SubTest { get; set; }
}
公共类测试
{
公共测试子测试{get;set;}
}
因此,要按原样回答您的问题,请将U替换为T:

public class Test<T> 
{
    public Test<T> SubTest { get; set; }
}
公共类测试
{
公共测试子测试{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
}
公共接口测试
{
//一般测试材料
}
//特定类型的东西
公共接口ITesty:ITest
{
公共ITest子测试{get;set;}//任何类型的子测试
}

谢谢你的回答,但那不是我需要的。谢谢你的回答,但那不是我需要的。是的,你是对的,这有点不一致。谢谢你的回复,我曾经尝试过界面,但不像你。谢谢你是对的,有点不一致。谢谢你的回复,我曾经尝试过界面,但不像你。谢谢