7
votes

Accédez à une propriété statique d'une classe générique?

J'utilise un hauteur pour tous les membres foo S. Comme ceci xxx

la même situation est dans vb.net.


1 commentaires

Quel est le problème avec tes yeux?


3 Réponses :


13
votes

Vous devez mettre un paramètre de type générique là-bas. Cela étant dit, j'utiliserai parfois une sorte de schéma d'héritage pour obtenir cette fonctionnalité sans avoir à mettre dans le paramètre de type générique.

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?
    }
}


1 commentaires

Oui, ça devrait. Même idée générale, juste la réécrire dans vb.net. Tout convertisseur de code en ligne devrait faire l'affaire.



2
votes

Chaque générique spécifique est son propre type et a donc sa propre variable statique. Ainsi, un FOO aurait un élément de hauteur statique différent de celui d'un FOO . Si vous voulez que les types de types FOO sont partagés, vous devez mettre en œuvre cela ailleurs.

Si vous voulez vraiment simplement définir la valeur d'un FOO type, que ce n'est que: foo . .


2 commentaires

Je suppose que la même situation sera avec le FOO , je veux dire FOO différer va différer de FOO


c'est correct. C'est une entité différente dans le système de type.



7
votes

Vous devez spécifier un type, tel que xxx pré>

ou p> xxx pré>

mais chacun est séparé. FOO .FooSheight code> n'est pas lié à FOO .FoosoSheight code>. Ils sont effectivement deux classes distinctes avec deux champs statiques distincts. Si vous souhaitez que la valeur soit la même pour tous les FOO , vous avez besoin d'un endroit séparé pour le stocker comme P>

FooHelper.FoosHeight = 50;


0 commentaires