我有一个C#方法,我需要从一块需要System.Type参数的Ruby调用。在C#中是否有类似于Ruby的Ruby? C#中的调用看起来像这样......
var CustomClasInstance = Container.GetInstance(typeof(ICustomClass))
答案 0 :(得分:55)
Object.class
或Object.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