Пример #1
0
        public CustomShipComparerBootstrapResult BootstrapCustomShipComparer(byte[] assemblyBinary)
        {
            var      result     = new CustomShipComparerBootstrapResult();
            var      msgBuilder = new StringBuilder();
            string   comparer   = null;
            Assembly assembly;

            try {
                assembly = AppDomain.CurrentDomain.Load(assemblyBinary);
                comparer = assembly.GetCustomAttribute <ComparerClassAttribute>()?.ClassName;
            } catch (Exception e) {
                (new PermissionSet(PermissionState.Unrestricted)).Assert();
                msgBuilder.Append("行0   列0   错误RT0001 : 无法加载程序集,发生异常 ");
                msgBuilder.AppendLine(e.ToString());
                result.ErrorMessage = msgBuilder.ToString();
                return(result);
            }
            if (comparer == null)
            {
                result.ErrorMessage = "行0   列0   错误CCE0000: 程序集上找不到 ComparerClass 属性";
                return(result);
            }

            try {
                KeepAlive.Add(result.Comparer = assembly.GetType(comparer).GetConstructor(new Type[0]).Invoke(new object[0]) as CustomComparerBase <Ship>);
                if (result.Comparer == null)
                {
                    msgBuilder.Append("行0   列0   错误CCE0001: 程序集的 ComparerClass 属性上指定的比较器 ");
                    msgBuilder.Append(comparer);
                    msgBuilder.AppendLine(" 不是 LynLogger.CustomComparerBase<LynLogger.Models.Ship> 的派生类");
                    result.ErrorMessage = msgBuilder.ToString();
                }
                return(result);
            } catch (Exception e) {
                (new PermissionSet(PermissionState.Unrestricted)).Assert();
                msgBuilder.Append("行0   列0   错误RT0002 : 构建比较器时发生异常 ");
                msgBuilder.AppendLine(e.ToString());
                result.ErrorMessage = msgBuilder.ToString();
                return(result);
            }
        }
Пример #2
0
        public CustomShipComparerBootstrapResult BootstrapCustomShipComparer(byte[] assemblyBinary)
        {
            var result = new CustomShipComparerBootstrapResult();
            var msgBuilder = new StringBuilder();
            string comparer = null;
            Assembly assembly;
            try {
                assembly = AppDomain.CurrentDomain.Load(assemblyBinary);
                comparer = assembly.GetCustomAttribute<ComparerClassAttribute>()?.ClassName;
            } catch(Exception e) {
                (new PermissionSet(PermissionState.Unrestricted)).Assert();
                msgBuilder.Append("行0   列0   错误RT0001 : 无法加载程序集,发生异常 ");
                msgBuilder.AppendLine(e.ToString());
                result.ErrorMessage = msgBuilder.ToString();
                return result;
            }
            if(comparer == null) {
                result.ErrorMessage = "行0   列0   错误CCE0000: 程序集上找不到 ComparerClass 属性";
                return result;
            }

            try {
                KeepAlive.Add(result.Comparer = assembly.GetType(comparer).GetConstructor(new Type[0]).Invoke(new object[0]) as CustomComparerBase<Ship>);
                if(result.Comparer == null) {
                    msgBuilder.Append("行0   列0   错误CCE0001: 程序集的 ComparerClass 属性上指定的比较器 ");
                    msgBuilder.Append(comparer);
                    msgBuilder.AppendLine(" 不是 LynLogger.CustomComparerBase<LynLogger.Models.Ship> 的派生类");
                    result.ErrorMessage = msgBuilder.ToString();
                }
                return result;
            } catch(Exception e) {
                (new PermissionSet(PermissionState.Unrestricted)).Assert();
                msgBuilder.Append("行0   列0   错误RT0002 : 构建比较器时发生异常 ");
                msgBuilder.AppendLine(e.ToString());
                result.ErrorMessage = msgBuilder.ToString();
                return result;
            }
        }