gpt4 book ai didi

C#泛型类型参数是泛型类型

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:42 26 4
gpt4 key购买 nike

如果有的话,应该应用什么类型的约束来使这项工作:

abstract class BaseClass<T> where T : ...
{
T<int> A { get; set; }
T<int?> B { get; set; }
T<string> C { get; set; }
}

目前它给出“错误 CS0307 类型参数‘T’不能与类型参数一起使用”。

最佳答案

有限制的解决方案:所有代表:Class1<T> , Class2<T> , 属于 T<>应该继承自一个类或接口(interface)(IBase<T>):

public interface IBase<T>
{
T Value { get; set; }
}

public class Class1<T> : IBase<T>
{
public T Value { get; set; }
public void SomeMethod1(T input)
{
}
}

public class Class2<T> : IBase<T>
{
public T Value { get; set; }
public void SomeMethod2(T input)
{
}
}

public class BaseClass<T1, T2, T3>
where T1 : IBase<int>
where T2 : IBase<int?>
where T3 : IBase<string>
{
public T1 A { get; set; }
public T2 B { get; set; }
public T3 C { get; set; }

public void SomeMethod3()
{
A.Value = 3;
B.Value = null;
C.Value = "string";
}
}

用法:

var test1 = new BaseClass<Class1<int>, Class1<int?>, Class1<string>>();
test1.A.Value = 3;
test1.A.SomeMethod1(3);

var test2 = new BaseClass<Class2<int>, Class2<int?>, Class2<string>>();
test2.C.Value = "string";
test2.A.SomeMethod2(3);

关于C#泛型类型参数是泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46318738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com