C#中保留字的类型是否有Ruby等价物?

时间:2010-02-03 13:51:40

标签: c# ruby

我有一个C#方法,我需要从一块需要System.Type参数的Ruby调用。在C#中是否有类似于Ruby的Ruby? C#中的调用看起来像这样......

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

4 个答案:

答案 0 :(得分:55)

Object.classObject.type应该做你需要的。

此外,可以使用两种方法Object.is_a?Object.instance_of?。但是,它们并非100%相同。仅当对象obj.instance_of?(myClass)被创建为obj类型的对象时,语句myClass才会返回true。如果对象obj.is_a?(myClass)属于类obj,属于从myClass继承的类,或者包含模块myClass,则使用myClass将返回true在它。

例如:

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

由于您的C#方法需要非常具体的数据类型,我建议您使用Object.instance_of?

答案 1 :(得分:38)

除了检查Object#类(Object aka Base类上的实例方法类)之外,还可以

s.is_a? Thing

这将检查s在其祖先的任何地方是否有东西。

答案 2 :(得分:5)

有关如何在Ruby中识别变量类型的参考,请参阅 http://www.techotopia.com/index.php/Understanding_Ruby_Variables#Identifying_a_Ruby_Variable_Type

如果您有名为s的变量,则可以通过调用

来检索它的类型
s.class

答案 3 :(得分:1)

ICustomClass.to_clr_type