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;}//任何类型的子测试
}
谢谢你的回答,但那不是我需要的。谢谢你的回答,但那不是我需要的。是的,你是对的,这有点不一致。谢谢你的回复,我曾经尝试过界面,但不像你。谢谢你是对的,有点不一致。谢谢你的回复,我曾经尝试过界面,但不像你。谢谢