.net 访问泛型类的静态属性?

.net 访问泛型类的静态属性?,.net,generics,.net,Generics,我对所有Foos成员使用Height。像这样 public class Foo<T> { public static int FoosHeight; } public partial class Form1 : Form { public Form1() { InitializeComponent(); Foo<???>.FoosHeight = 50; // DO I Set "object" here?

我对所有
Foo
s成员使用
Height
。像这样

public class Foo<T> 
{
    public static int FoosHeight;
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Foo<???>.FoosHeight = 50; // DO I Set "object" here?
    }
}
公共类Foo
{
公共空间;
}
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
Foo.FoosHeight=50;//我在这里设置“object”吗?
}
}

VB.NET中也存在同样的情况。

您必须在其中放入一些泛型类型参数。也就是说,我有时会使用某种继承方案来获得此功能,而不必输入泛型类型参数

public class Foo
{
    public static int FoosHeight;
}

public class Foo<T> : Foo
{
   // whatever
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Foo.FoosHeight = 50; // DO I Set "object" here?
    }
}
公共类Foo
{
公共空间;
}
公开课Foo:Foo
{
//随便
}
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
Foo.FoosHeight=50;//我在这里设置“object”吗?
}
}

这就是说,无论传入
Foo
的泛型类型参数是什么,这都将保持相同的FoosHeight。如果希望每个版本的
Foo
都有一个不同的值,则必须选择要放入该类型参数的类型,并忘记继承方案

每个特定泛型都有自己的类型,因此有自己的静态变量。因此,
Foo
将具有与
Foo
不同的静态高度成员。如果您希望在所有特定的
Foo
类型之间共享,那么您需要在其他地方实现它


如果您确实只想设置
Foo
类型的值,那么只需要指定一个类型,例如

Foo<int>.FoosHeight = 50;

FooHelper与Foo没有正式关系。

你的眼睛怎么了?我想Foo也会有同样的情况,我的意思是Foo与Foothat是正确的。它是类型系统中的另一个实体。是的,它应该。相同的总体思路,只需在VB.NET中重写即可。任何在线代码转换器都应该做到这一点。
Foo<Bar>.FoosHeight = 50;
FooHelper.FoosHeight = 50;