Exemplo n.º 1
0
        public override void Initialize(IApp app)
        {
            base.Initialize(app);

            Resolvers.ForEach(r =>
            {
                var iface = default(Type);

                if ((iface = r.Type.GetInterface(typeof(IReferenceResolver <>).FullName)) == null)
                {
                    throw new ElideException("Resolver '{0}' doesn't implement IReferenceResolver<> interface.", r.Type);
                }

                var arg = iface.GetGenericArguments()[0];
                ResolverInstances.Add(arg, TypeCreator.New(r.Type));
            });
        }
Exemplo n.º 2
0
        public virtual ICompiledUnit Resolve <T>(T reference, params ExtendedOption[] options) where T : IReference
        {
            var type        = typeof(T);
            var resolverObj = default(Object);

            if (type == typeof(IReference))
            {
                type = reference.GetType();
            }

            if (!ResolverInstances.TryGetValue(type, out resolverObj))
            {
                throw new ElideException("Unable to find resolver for '{0}'.", type);
            }

            var resolver = (IReferenceResolver <T>)resolverObj;

            resolver.App = App;
            return(resolver.Resolve(reference, options));
        }