public static object Resolve(this IComponentContext componentContext, Type instanceType) { if (!componentContext.TryResolve(instanceType, out var instance)) { ContextException.ResolveErr(instanceType); } return(instance); }
public static T Resolve <T>(this IComponentContext componentContext) { if (!componentContext.TryResolve <T>(out var instance)) { ContextException.ResolveErr(typeof(T)); } return(instance); }
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)); }
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); }