C# 通用类型作为参数

Nor*_*sil 2 c# generics

我有以下接口和类:

public abstract class A {}
public abstract class B<T> : IType<T>
{
    public T Value { get; set; }
}

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

public class C : B<String>, IType<String> { }
public class D : B<Int32>, IType<Int32> { }
Run Code Online (Sandbox Code Playgroud)

如何在不使用 的情况下将 C 或 D 作为方法参数传递A?所以参数类型必须是IType<T>or B<T>

不幸的是,我对泛型完全陌生,所以任何帮助将不胜感激。谢谢!

编辑

我想要实现的目标类似于以下内容(无法编译)

public void SetB(B<T> Type)
{
    //Do stuff...
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以将 C 或 D 传递给该方法。

Der*_*ler 6

您的方法也可以是通用的

public void MyMethod<T>(IType<T> arg)
{
    throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

你可以这样称呼它。

MyMethod(new C());
MyMethod(new D());
Run Code Online (Sandbox Code Playgroud)