29 votes

Existe-t-il un équivalent Ruby pour le type de mot réservé en C #?

J'ai une méthode C # que je dois appeler à partir d'un morceau de Ruby qui nécessite un argument System.Type. Existe-t-il un Ruby équivalent à typeof en C #? L'appel ressemblera à quelque chose comme ça en C # ...

var CustomClasInstance = Container.GetInstance (typeof (ICustomClass))

50voto

bta Points 22525

Soit Object.class ou Object.type devrait faire ce que vous avez besoin.

Aussi, les deux méthodes d' Object.is_a? et Object.instance_of? peut être utilisé. Cependant, ils ne sont pas identiques à 100%. L'énoncé obj.instance_of?(myClass) retournera true seulement si l'objet obj a été créé comme un objet de type myClass. À l'aide de obj.is_a?(myClass) retournera true si l'objet obj d'une classe myClass, est d'une classe qui a hérité de l' myClass, ou a le module myClass inclus.

Par exemple:

x = 1
x.class                   => Fixnum
x.instance_of? Integer    => false
x.instance_of? Numeric    => false
x.instance_of? Fixnum     => true
x.is_a? Integer           => true
x.is_a? Numeric           => true
x.is_a? Fixnum            => true

Depuis votre méthode C# nécessite un type de données spécifique, je vous conseille d'utiliser l' Object.instance_of?.

36voto

RyanWilcox Points 7838

En plus de vérifier la classe Object # (la classe de méthode d'instance sur la classe Object aka Base), vous pouvez

 s.is_a? Thing
 

cela vérifiera si s a quelque chose dans son ascendance.

4voto

jsalonen Points 9651

Pour une référence sur la façon d'identifier les types de variables dans Ruby, voir http://www.techotopia.com/index.php/Understanding_Ruby_Variables#Identifying_a_Ruby_Variable_Type

Si vous avez une variable nommée s , vous pouvez en récupérer le type en appelant

 s.class
 

1voto

dtb Points 104373
ICustomClass.to_clr_type

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X