예제 #1
0
        public static object Resolve(this IComponentContext componentContext, Type instanceType)
        {
            if (!componentContext.TryResolve(instanceType, out var instance))
            {
                ContextException.ResolveErr(instanceType);
            }

            return(instance);
        }
예제 #2
0
        public static T Resolve <T>(this IComponentContext componentContext)
        {
            if (!componentContext.TryResolve <T>(out var instance))
            {
                ContextException.ResolveErr(typeof(T));
            }

            return(instance);
        }
예제 #3
0
        public override object ActivateInstance(IComponentContext context)
        {
            var ctor = DefaultConstructor();

            var @params = ctor.GetParameters();

            var paramInstances = new object[@params.Length];

            for (int i = 0; i < @params.Length; i++)
            {
                var argType = @params[i].ParameterType;

                if (!context.TryResolve(argType, out var param))
                {
                    ContextException.ResolveErr(argType);
                }

                paramInstances[i] = param;
            }

            return(CtorCompiler()(paramInstances));
        }
예제 #4
0
        private static Exception HandleDbUpdateException(DbUpdateException dbUex)
        {
            Exception result;
            // let the unique constraint exceptions flow
            var innerException = dbUex.InnerException == null
                ? null
                : dbUex.InnerException.InnerException as SqlException;

            if (innerException != null && (innerException.Number == 2627 || innerException.Number == 2601))
            {
                //your handling stuff
                IEnumerable <DbEntityEntry> entries = dbUex.Entries.ToList();

                var outputLines = new StringBuilder();

                if (entries.Count() > 1)
                {
                    outputLines.AppendLine(string.Format("There are {0} entries conflicting :", entries.Count()));
                }

                var index = 1;

                foreach (var entity in entries)
                {
                    outputLines.AppendLine(string.Format("conflicting entry {0}", index));
                    //outputLines.AppendLine(ObjectDumper.Dump(entity.Entity));
                    outputLines.AppendLine(string.Format("end of conflicting entry {0}", index));

                    index++;
                }

                var detailedException = outputLines.ToString();

                result = new ContextUniqueConstraintFailureException(detailedException);
            }
            else
            if (!(dbUex.InnerException is UpdateException) ||
                !(dbUex.InnerException.InnerException is SqlException))
            {
                IEnumerable <DbEntityEntry> entries = dbUex.Entries.ToList();

                var outputLines = new StringBuilder();

                if (entries.Count() > 1)
                {
                    outputLines.AppendLine(string.Format("There are {0} entries conflicting :", entries.Count()));
                }

                var index = 1;

                foreach (var entity in entries)
                {
                    outputLines.AppendLine(string.Format("conflicting entry {0}", index));
                    //outputLines.AppendLine(entity.);
                    outputLines.AppendLine(string.Format("end of conflicting entry {0}", index));

                    index++;
                }

                var detailedException = outputLines.ToString();
                result = new ContextException(detailedException);
            }
            else
            {
                var sqlException =
                    (SqlException)dbUex.InnerException.InnerException;

                var outputLines = new StringBuilder();
                for (var i = 0; i < sqlException.Errors.Count; i++)
                {
                    var    errorNum = sqlException.Errors[i].Number;
                    string errorText;
                    if (SqlErrorTextDict.TryGetValue(errorNum, out errorText))
                    {
                        outputLines.AppendLine(errorText);
                    }
                }

                var detailedException = outputLines.ToString();
                result = new ContextException(detailedException);
            }
            return(result);
        }