From: Walter Szewelanczyk Date: 2004-09-03T05:50:46+09:00 Subject: Re: Not just $SAFE, but damn $SAFE Aredridel wrote: >> Sincerely I don't understand (I know, I'm stupid) but why don't you define >> classes that you want to trust and give a result only when an object >> belong to theses classes ? > > > The problem is in finding out what class something is. > > obj.class # Bad -- class can be overridden to be evil > > obj.instance_of? # Bad -- same as #class > > Class === obj # Bad, because you can define an evil subclass. > > > To find the class you can use : class ClassFinder @@classCall = Object.instance_method(:class) def ClassFinder.class(obj) @@classCall.bind(obj).call end end class Bad def class Object end end puts Bad.new.class puts ClassFinder.class(Bad.new) outputs : Object Bad Walt -- Walter Szewelanczyk IS Director M.W. Sewall & CO. email : walter@mwsewall.com 259 Front St. Phone : (207) 442-7994 x 128 Bath, ME 04530 Fax : (207) 443-6284