Files

Caricature::ClrMemberCollector

Contains the logic to collect members from a CLR type

Attributes

class_events[R]
events[R]

Private Instance Methods

build_event_collection(context, instance_member) click to toggle source
    # 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
build_member_collections(context={}, instance_member=true) click to toggle source

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
build_method_collection(context, instance_member) click to toggle source
    # 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
build_property_collection(context, instance_member) click to toggle source
    # 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
class_event_flags() click to toggle source
    # File lib/caricature/clr/descriptor.rb, line 69
69:     def class_event_flags
70:       non_public_flag | class_flags
71:     end
class_flags() click to toggle source

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
event?(name, instance_member) click to toggle source

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
event_flags() click to toggle source
    # File lib/caricature/clr/descriptor.rb, line 65
65:     def event_flags
66:       non_public_flag | instance_flags
67:     end
instance_flags() click to toggle source

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
non_public_flag() click to toggle source
    # File lib/caricature/clr/descriptor.rb, line 73
73:     def non_public_flag
74:       System::Reflection::BindingFlags.non_public
75:     end
property_name_from(property_info) click to toggle source

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.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.