J'ai une classe de base appelée, et il a une fonction virtuelle appelée Foone peut pas utiliser le type stocké dans un tableau de type
class a
{
public virtual void Foo() {}
}
et moi avons un tas d'autres classes héritant de celui-ci.
class B : A{}
class C : A{}
class D : A{}
class E : A{}
Maintenant, je veux avoir un tableau des types que je puisse choisir un par hasard si je l'ai essayé ceci:
class Boo
{
Type[] options;
public Boo()
{
options = new[]
{
typeof(B),
typeof(C),
typeof(D),
typeof(E)
};
}
}
Et puis je veux choisir un au hasard et d'utiliser son Foo méthode et je l'ai fait comme ceci:
Random rnd = new Random();
(options[rnd.Next(options.Length)] as A).Foo()
Mais cela ne fonctionne pas, y at-il un moyen d'accomplir cela?
(BTW, je n'avais pas un bon nom pour ce donc si quelqu'un a un meilleur nom, ils peuvent se sentir libres de modifier :))
Que voulez-vous dire par "ne fonctionne pas"? Des erreurs? –
options contient type, où Foo() attend une instance. – qxg
'options [rnd.Next (options.Length)] comme A' devrait être' null' donc une exception 'NullReferenceException' est levée. – dcg