示例#1
0
 public TypeMetadata(
     string name,
     Type baseType,
     Type[] interfaces,
      DispatcherFieldMetadata dispatcherField,
     FieldMetadata[] fields,
     ConstructorMetadata[] constructors, 
     MethodMetadata[] methods, 
     PropertyMetadata[] properties, 
     EventMetadata[] events, 
     TargetMetadata[] targets)
 {
     _name = name;
     _baseType = baseType;
     _interfaces = interfaces;
     _dispatcherField = dispatcherField;
     _fields = fields;
     _constructors = constructors;
     _methods = methods;
     _properties = properties;
     _events = events;
     _targets = targets;
 }
        protected virtual void InitializeMixins()
        {
            var currentMixinPosition = 1;

            for (var i = 0; i < _proxyDefinition.Interfaces.Length; i++)
            {
                var mixinInterface = _proxyDefinition.Interfaces[i] as MixinInterfaceDefinition;

                if (mixinInterface == null)
                {
                    break;
                }

                var name = String.Format("mixin{0}", currentMixinPosition++);

                var mixin = new TargetMetadata(
                    name,
                    mixinInterface.Type,
                    mixinInterface.MixinType,
                    mixinInterface.ProxyInstantiated);

                _mixins.Add(mixin);

                _fields.Add(mixin.InstanceField);

                InitializeDefinitionMethods(mixinInterface, mixin.InstanceField, true);
                InitializeDefinitionProperties(mixinInterface, mixin.InstanceField, true);
                InitializeDefinitionEvents(mixinInterface, mixin.InstanceField, true);
            }
        }