gpt4 book ai didi

c# - 包含另一个泛型类型的子代的泛型类

转载 作者:行者123 更新时间:2023-11-30 22:57:28 25 4
gpt4 key购买 nike

标题可能有点令人困惑,但我不确定如何用不同的方式表达它。

我有一个泛型类。我希望该类包含同一个类的子类,但具有另一个泛型类型。像这样:

public class Test<Foo>
{
private readonly Foo _myFoo;

public Test<ChildFoo> Child { get; set; }

public Test(Foo foo)
{
_myFoo = foo;
}
}

public class Impl
{
public void FooTest()
{
var parent = new Test<string>("tester");
var child = new Test<int>(1234);

parent.Child = child;
}
}

但我不能有一个带有“ChildFoo”泛型的 Child。还有其他方法吗?

最佳答案

像这样尝试。

public class Test<T1, T2>
{
private readonly T1 _myFoo;

public T2 Child { get; set; }

public Test(T1 foo)
{
_myFoo = foo;
}
}

public class Impl
{
public void FooTest()
{
var parent = new Test<string, Test<int, object>>("tester");
var child = new Test<int, object>(1234);
parent.Child = child;
}
}

由于第一个解决方案不能满足您的需求,我还有一个涉及界面的想法,让您与 child 一起工作,就好像它是Test<,>一样。 .

public class Test<T1, T2> : ITest where T2 : ITest
{
private readonly T1 _myFoo;

public T2 Child { get; set; }

public void A()
{
}

public void B()
{
Child.A();
}

public Test(T1 foo)
{
_myFoo = foo;
}
}

public interface ITest
{
void A();
void B();
}

public class Impl
{
public void FooTest()
{
var parent = new Test<string, Test<int, ITest>>("tester");
var child = new Test<int, ITest>(1234);
parent.Child = child;
}
}

关于c# - 包含另一个泛型类型的子代的泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53646066/

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