//private readonly ILogger _logger = null;

        public AuditEventHandler(IServiceProvider serviceProvider /*, ILogger logger*/, DictionaryAccessor dictionaryAccessor)
        {
            _serviceProvider    = serviceProvider;
            _dictionaryAccessor = dictionaryAccessor;
            //_dictionaryAccessor = serviceProvider.GetService<DictionaryAccessor>();
            //_logger = logger;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the member accessor for the specified object if not already cached. This method can have an override.
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        protected virtual IObjectAccessor GetMemberAccessorImpl(object target)
        {
            var             type = target.GetType();
            IObjectAccessor accessor;

            if (target is IScriptObject)
            {
                accessor = ScriptObjectAccessor.Default;
            }
            else if (target is string)
            {
                accessor = StringAccessor.Default;
            }
            else if (type.IsPrimitiveOrDecimal())
            {
                accessor = PrimitiveAccessor.Default;
            }
            else if (DictionaryAccessor.TryGet(target, out accessor))
            {
            }
            else if (type.IsArray)
            {
                accessor = ArrayAccessor.Default;
            }
            else if (target is IList)
            {
                accessor = ListAccessor.Default;
            }
            else
            {
                accessor = new TypedObjectAccessor(type, MemberFilter, MemberRenamer);
            }
            return(accessor);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Gets the member accessor for the specified object if not already cached. This method can have an override.
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        protected virtual IObjectAccessor GetMemberAccessorImpl(object target)
        {
            Type            type = target.GetType();
            IObjectAccessor accessor;

            if (target is IScriptObject)
            {
                accessor = ScriptObjectAccessor.Default;
            }
            else if (DictionaryAccessor.TryGet(type, out accessor))
            {
                // do nothing
            }
            else if (type.GetTypeInfo().IsArray)
            {
                accessor = ArrayAccessor.Default;
            }
            else if (target is IList)
            {
                accessor = ListAccessor.Default;
            }
            else
            {
                accessor = new TypedObjectAccessor(type, MemberFilter, MemberRenamer);
            }

            return(accessor);
        }
Ejemplo n.º 4
0
            protected static void Resolve(Dictionary <string, IValueAccessor> output, object value)
            {
                if (value == null)
                {
                    return;
                }
                if (value is DependencyObject obj)
                {
                    var key = GetKey(obj);
                    if (key != null)
                    {
                        foreach (var resolver in Resolvers)
                        {
                            if (resolver.BaseType.IsInstanceOfType(obj))
                            {
                                output[key] = resolver.Resolve(obj);
                                return;
                            }
                        }
                    }

                    IEnumerable children;
                    if (obj is Decorator decorator)
                    {
                        children = new[] { decorator.Child }
                    }
                    ;
                    else if (obj is ContentControl contentControl)
                    {
                        children = new[] { contentControl.Content }
                    }
                    ;
                    else if (obj is Panel panel)
                    {
                        children = panel.Children;
                    }
                    else if (key != null)
                    {
                        throw new NotSupportedException();
                    }
                    else
                    {
                        return;
                    }
                    var dict = key == null ? output : new Dictionary <string, IValueAccessor>();
                    foreach (var child in children)
                    {
                        Resolve(dict, child);
                    }
                    if (key != null)
                    {
                        output[key] = new DictionaryAccessor(dict);
                    }
                }
            }
Ejemplo n.º 5
0
        /// <summary>
        /// Gets the member accessor for the specified object if not already cached. This method can have an override.
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        protected virtual IObjectAccessor GetMemberAccessorImpl(object target)
        {
            var             type = target.GetType();
            IObjectAccessor accessor;

            if (target is IScriptObject)
            {
                accessor = ScriptObjectAccessor.Default;
            }
            else if (!DictionaryAccessor.TryGet(type, out accessor))
            {
                accessor = new TypedObjectAccessor(type, MemberRenamer);
            }
            return(accessor);
        }
Ejemplo n.º 6
0
        protected override IObjectAccessor GetMemberAccessorImpl(object target)
        {
            // Duplicated from Scriban.TemplateContext#GetMemberAccessorImpl

            var             type = target.GetType();
            IObjectAccessor accessor;

            if (target is IScriptObject)
            {
                accessor = ScriptObjectAccessor.Default;
            }
            else if (target is string)
            {
                accessor = StringAccessor.Default;
            }
            else if (type.IsPrimitiveOrDecimal())
            {
                throw new NotImplementedException("member access of a primitive or decimal");
                //accessor = PrimitiveAccessor.Default;
            }
            else if (DictionaryAccessor.TryGet(target, out accessor))
            {
            }
            else if (type.IsArray)
            {
                accessor = ArrayAccessor.Default;
            }
            else if (target is IList)
            {
                accessor = ListAccessor.Default;
            }
            else
            {
                accessor = new NScribeTypedObjectAccessor(type, MemberFilter, MemberRenamer);
            }

            return(accessor);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Gets the member accessor for the specified object.
        /// </summary>
        /// <param name="target">The target object to get a member accessor.</param>
        /// <returns>A member accessor</returns>
        public IMemberAccessor GetMemberAccessor(object target)
        {
            if (target == null)
            {
                return(NullAccessor.Default);
            }

            var             type = target.GetType();
            IMemberAccessor accessor;

            if (!memberAccessors.TryGetValue(type, out accessor))
            {
                if (target is IScriptObject)
                {
                    accessor = ScriptObjectExtensions.Accessor;
                }
                else if (!DictionaryAccessor.TryGet(type, out accessor))
                {
                    accessor = new TypedMemberAccessor(type, MemberRenamer);
                }
                memberAccessors.Add(type, accessor);
            }
            return(accessor);
        }
Ejemplo n.º 8
0
 public AuditEventHandler(IServiceProvider serviceProvider, DictionaryAccessor dictionaryAccessor)
 {
     _serviceProvider    = serviceProvider;
     _dictionaryAccessor = dictionaryAccessor;
 }
 public SuktMultiTenancyMiddleware(RequestDelegate next, DictionaryAccessor dictionaryAccessor)
 {
     _next = next;
     _dictionaryAccessor = dictionaryAccessor;
 }