Contains the logic to collect members from a CLR type
# File lib/caricature/clr/descriptor.rb, line 38
38: def build_event_collection(context, instance_member)
39: context[:events].inject(evts=[]) { |evc, ei| evc << ClrEventDescriptor.new(ei.name, instance_member) }
40: (instance_member ? @events = evts : @class_events = evts)
41: end
collects the instance members for a CLR type. makes sure it can handle indexers for properties etc.
# File lib/caricature/clr/descriptor.rb, line 11
11: def build_member_collections(context={}, instance_member=true)
12:
13: build_event_collection(context, instance_member)
14:
15: mem = []
16: mem += build_method_collection(context, instance_member)
17: mem += build_property_collection(context, instance_member)
18: mem
19: end
# File lib/caricature/clr/descriptor.rb, line 31
31: def build_method_collection(context, instance_member)
32: context[:methods].inject([]) do |meths, mi|
33: meths << MemberDescriptor.new(mi.name.underscore, mi.return_type, instance_member) unless event?(mi.name, instance_member)
34: meths
35: end
36: end
# File lib/caricature/clr/descriptor.rb, line 21
21: def build_property_collection(context, instance_member)
22: context[:properties].inject([]) do |res, pi|
23: prop_name = property_name_from(pi)
24: res << MemberDescriptor.new(prop_name, pi.property_type, instance_member)
25: res << MemberDescriptor.new("set_Item", nil, instance_member) if prop_name == "get_Item"
26: res << MemberDescriptor.new("#{prop_name}=", nil, instance_member) if pi.can_write and prop_name != "get_Item"
27: res
28: end
29: end
# File lib/caricature/clr/descriptor.rb, line 69
69: def class_event_flags
70: non_public_flag | class_flags
71: end
the binding flags for class members of a CLR type
# File lib/caricature/clr/descriptor.rb, line 61
61: def class_flags
62: System::Reflection::BindingFlags.public | System::Reflection::BindingFlags.static
63: end
indicates if this member is an event
# File lib/caricature/clr/descriptor.rb, line 44
44: def event?(name, instance_member)
45: ((instance_member ? @events : @class_events)||[]).any? { |en| /^(add|remove)_#{en.event_name}/ =~ name }
46: end
# File lib/caricature/clr/descriptor.rb, line 65
65: def event_flags
66: non_public_flag | instance_flags
67: end
the binding flags for instance members of a CLR type
# File lib/caricature/clr/descriptor.rb, line 56
56: def instance_flags
57: System::Reflection::BindingFlags.public | System::Reflection::BindingFlags.instance
58: end
# File lib/caricature/clr/descriptor.rb, line 73
73: def non_public_flag
74: System::Reflection::BindingFlags.non_public
75: end
gets the property name from the PropertyInfo when the property is an indexer it will return +[]+
# File lib/caricature/clr/descriptor.rb, line 50
50: def property_name_from(property_info)
51: return property_info.name.underscore if property_info.get_index_parameters.empty?
52: "get_Item"
53: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.