private void PrecacheReflections(Type controllerType) { var defaultConstructor = controllerType.GetConstructors().FirstOrDefault(x => x.GetParameters().Length == 0); if (defaultConstructor == null) { throw new ArgumentException("StatementHandler " + controllerType.Name + " does not have a default constructor"); } activator = FastFlect.GetActivator(defaultConstructor); delegateForScopeSetter = controllerType.DelegateForSetPropertyValue("Scope"); delegateForContextSetter = controllerType.DelegateForSetPropertyValue("Context"); delegateForAttachmentsSetter = controllerType.DelegateForSetPropertyValue("Attachments"); delegateForTracerSetter = controllerType.DelegateForSetPropertyValue("Tracer"); delegateForInvokation = definition.MethodInfo.DelegateForCallMethod(); if (definition.TransformsScopeTo != null) { scopeConverter = StaticAnalysis.CreateConverter(definition.TransformsScopeTo); transformsToValueType = definition.TransformsScopeTo.IsValueType; } }
private void PrecacheReflections(Type controllerType) { var defaultConstructor = controllerType.GetConstructors().FirstOrDefault(x => x.GetParameters().Length == 0); if (defaultConstructor == null) throw new ArgumentException("StatementHandler " + controllerType.Name + " does not have a default constructor"); activator = FastFlect.GetActivator(defaultConstructor); delegateForScopeSetter = controllerType.DelegateForSetPropertyValue("Scope"); delegateForContextSetter = controllerType.DelegateForSetPropertyValue("Context"); delegateForAttachmentsSetter = controllerType.DelegateForSetPropertyValue("Attachments"); delegateForTracerSetter = controllerType.DelegateForSetPropertyValue("Tracer"); delegateForInvokation = definition.MethodInfo.DelegateForCallMethod(); if (definition.TransformsScopeTo != null) { scopeConverter = StaticAnalysis.CreateConverter(definition.TransformsScopeTo); transformsToValueType = definition.TransformsScopeTo.IsValueType; } }