public ReflectedPropertyTreeDefinition(Type type) { this.type = type; this.operators = new OperatorDefinitionCollection(); if (type.IsAbstract) { // Composable providers can be abstract if (type.IsProviderType() && type.IsDefined(typeof(ComposableAttribute), false)) { var composeMember = AppDomain.CurrentDomain.GetProviderMember(type, "compose"); if (composeMember == null) throw new NotImplementedException(); this.activationConstructor = ReflectedProviderFactoryDefinitionBase.Create(type, composeMember); } } else { MethodBase ctor = TypeHelper.FindActivationConstructor(type); if (ctor != null) { this.activationConstructor = ReflectedPropertyTreeFactoryDefinition.Create(null, ctor); } } }
protected internal virtual void VisitPropertyTreeFactory(PropertyTreeFactoryDefinition node) { DefaultVisit(node); }