Подтвердить что ты не робот

Есть ли эквивалент Ruby для типа зарезервированного слова в С#?

У меня есть метод С#, который мне нужно вызвать из части Ruby, для которой требуется аргумент System.Type. Есть ли эквивалент Ruby для typeof в С#? Вызов будет выглядеть примерно так на С#...

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

4b9b3361

Ответ 1

В дополнение к проверке класса Object # (класс метода экземпляра класса Object aka Base) вы можете

s.is_a? Thing

это проверит, будет ли у вас что-нибудь в своей родословной.

Ответ 2

Либо Object.class, либо Object.type должны делать то, что вам нужно.

Кроме того, могут использоваться два метода Object.is_a? и Object.instance_of?. Однако они не на 100% идентичны. Оператор obj.instance_of?(myClass) возвращает true, только если объект obj был создан как объект типа myClass. Использование obj.is_a?(myClass) вернет true, если объект obj имеет класс myClass, имеет класс, унаследованный от myClass, или содержит в нем модуль myClass.

Например:

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

Поскольку ваш метод С# требует особого типа данных, я бы рекомендовал использовать Object.instance_of?.

Ответ 4

ICustomClass.to_clr_type