示例#1
0
        public override bool Match(TModel model, string line)
        {
            var list = (List <TValue>)Property.GetValue(model);

            if (TryParse != null)
            {
                TValue result;
                if (!TryParse.Invoke(line, out result))
                {
                    return(false);
                }
                list.Add(result);
                return(true);
            }
            var parts = line.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length < 2)
            {
                return(false);
            }
            if (!parts[0].TrimStart().StartsWith(Key))
            {
                return(false);
            }
            var indexpart = Regex.Match(parts[0]).Value.Trim();
            var index     = int.Parse(indexpart);

            //list.Insert(index - 1, (TValue)GetValue(parts[1].Trim()));
            while (list.Count < index)
            {
                list.Add(default(TValue));
            }
            list[index - 1] = (TValue)GetValue(parts[1].Trim());
            return(true);
        }
示例#2
0
        internal static T GetValue <T>(this string str, TryParse <T> parseFunc)
        {
            T val;

            parseFunc(str, out val);
            return(val);
        }
示例#3
0
        public HydraAppsModel GetApplications()
        {
            HydraAppsModel model = new HydraAppsModel();

            using (SQLiteConnection connection = this.OpenConnection())
            {
                string commandText =
                    @"SELECT ap.uid
       , ap.app_name
       , ap.app_url
       , ap.description
       , dv.id AS developer_id
       , dv.dev_name AS developer_name
  FROM application ap 
  LEFT JOIN developer dv ON dv.id = ap.developer_id 
  ORDER BY ap.app_name ";
                using (DataTable dtApplications = this.Fill(commandText))
                {
                    foreach (DataRow app in dtApplications.Rows)
                    {
                        model.Add(new HydraAppModel()
                        {
                            UId           = TryParse.ToGuid(app["uid"]),
                            Name          = TryParse.ToString(app["app_name"]),
                            DeveloperId   = TryParse.ToInt32(app["developer_id"]),
                            DeveloperName = TryParse.ToString(app["developer_name"]),
                            AppUrl        = TryParse.ToString(app["app_url"]),
                            Description   = TryParse.ToString(app["description"])
                        });
                    }
                }
            }
            return(model);
        }
示例#4
0
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            TaskPlanItem entity = new TaskPlanItem()
            {
                TaskItemType = 0
            };

            if (raSpiderTask.Checked)
            {
                if (dgvTask.SelectedRows.Count > 0)
                {
                    entity.CategroyName = comCategorys.SelectedItem.ToString();
                    entity.TaskID       = TryParse.StrToInt(dgvTask[colTaskID.Index, dgvTask.SelectedRows[0].Index].Value);
                    entity.TaskName     = CDataItem.Instance(dgvTask[colTaskName.Index, dgvTask.SelectedRows[0].Index].Value.ToString());
                    entity.TaskType     = EnumGloabParas.EnumPlanTaskType.Task;
                    entity.TaskArgs     = "";
                }
                else
                {
                    WinFormLib.Core.MessageBoxHelper.ShowError("请选择执行任务!");
                    return;
                }
            }
            else if (raDataTask.Checked)
            {
                if (cbPubDataTable.SelectedItem != null || string.IsNullOrEmpty(cbPubDataTable.Text))
                {
                    entity.CategroyName = CDataItem.Instance("");
                    entity.TaskID       = 0;
                    entity.TaskName     = string.IsNullOrEmpty(cbPubDataTable.Text) ? cbPubDataTable.SelectedItem.ToString() : cbPubDataTable.Text;
                    entity.TaskType     = EnumGloabParas.EnumPlanTaskType.DataBase;
                    entity.TaskArgs     = lbConnectionString.Value;
                    entity.TaskItemType = cbPubDataTable.SelectedItem != null ? 1 : 0;
                }
                else
                {
                    WinFormLib.Core.MessageBoxHelper.ShowError("请设置查询或存储过程");
                    return;
                }
            }
            else if (raOtherTask.Checked)
            {
                entity.CategroyName = CDataItem.Instance("");
                entity.TaskID       = 0;
                entity.TaskName     = lbFileName.Value;
                entity.TaskType     = EnumGloabParas.EnumPlanTaskType.Custom;
                entity.TaskArgs     = lbFileArgs.Value;
                if (string.IsNullOrEmpty(entity.TaskName.Value))
                {
                    WinFormLib.Core.MessageBoxHelper.ShowError("请设置执行程序路径");
                    return;
                }
            }
            this.DialogResult = DialogResult.OK;
            if (e_OnReturnTaskPlanItem != null)
            {
                e_OnReturnTaskPlanItem(entity);
            }
            this.Close();
        }
示例#5
0
        public virtual bool Match(TModel model, string line)
        {
            if (TryParse != null)
            {
                TValue result;
                if (!TryParse.Invoke(line, out result))
                {
                    return(false);
                }
                SetActualValue(model, result);
                return(true);
            }
            var parts = line.Split(Separator, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length < 2)
            {
                return(false);
            }
            if (Key != parts[0])
            {
                return(false);
            }
            SetActualValue(model, GetValue(parts[1].Trim()));
            return(true);
        }
示例#6
0
        public List <ContractorModel> GetContractors()
        {
            List <ContractorModel> model = new List <ContractorModel>();
            string commandText           =
                @"SELECT cnt.ID AS CONTRACTOR_ID
       , cnt.CONTRACTOR_TYPE_ID
       , cnt.C_NAME
       , cnt.ID_CONTRACTOR
       , cnt.S_TOWN_ID
       , cnt.C_ADDRESS
       , ISNULL(c_cmp.ACCOUNTABLE_PERSON, '') AS ACCOUNTABLE_PERSON
 FROM CONTRACTOR cnt
 LEFT JOIN CONTRACTOR_COMPANY c_cmp ON c_cmp.CONTRACTOR_ID = cnt.ID
 ORDER BY cnt.C_NAME ";

            using (DataTable dtContractors = FillDataTable(commandText))
            {
                foreach (DataRow drContractor in dtContractors.Rows)
                {
                    model.Add(new ContractorModel()
                    {
                        ContractorId      = TryParse.ToInt32(drContractor["CONTRACTOR_ID"]),
                        Name              = TryParse.ToString(drContractor["C_NAME"]),
                        ContractorTypeId  = TryParse.ToInt32(drContractor["CONTRACTOR_TYPE_ID"]),
                        IdContractor      = TryParse.ToString(drContractor["ID_CONTRACTOR"]),
                        TownId            = TryParse.ToInt32(drContractor["S_TOWN_ID"]),
                        Address           = TryParse.ToString(drContractor["C_ADDRESS"]),
                        AccountablePerson = TryParse.ToString(drContractor["ACCOUNTABLE_PERSON"])
                    });
                }
            }
            return(model);
        }
示例#7
0
        private void BtnBoka_Click(object sender, EventArgs e)
        {
            double temp;

            if (TryParse.Double(tbxAntalDagar, out temp))
            {
                string query = $"INSERT Resor(Namn, Destination, AntalDagar) VALUES('{tbxKund.Text}','{tbxDestination.Text}','{temp}')";
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        command.CommandType = CommandType.Text;
                        command.ExecuteNonQuery();
                    };
                }

                MessageBox.Show("Resand är bokad", "Bekräftelse", MessageBoxButtons.OK, MessageBoxIcon.Information);
                FetchFromDB();

                tbxKund.Clear();;
                tbxDestination.Clear();
                tbxAntalDagar.Clear();
            }
        }
示例#8
0
 private static void AddConverter <T>(TryParse <T> tryParse)
 {
     Converters.Add(typeof(T), str =>
     {
         return(tryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out T value) ? (object)value : null);
     });
 }
示例#9
0
        /// <summary>
        /// Списък отстъки
        /// </summary>
        public List <ListItemModel> GetList(string discountList)
        {
            List <ListItemModel> model = new List <ListItemModel>();
            string sqlDiscountList     = discountList.Trim(',');

            if (String.IsNullOrWhiteSpace(sqlDiscountList))
            {
                return(model);
            }

            string commandText =
                @"SELECT d.ID, d.D_NAME
 FROM DISCOUNT d
 WHERE d.ID IN (" + sqlDiscountList + @")
 ORDER BY d.D_NAME ";

            using (DataTable dtDiscounts = FillDataTable(commandText))
            {
                foreach (DataRow drDiscount in dtDiscounts.Rows)
                {
                    model.Add(new ListItemModel()
                    {
                        id     = TryParse.ToString(drDiscount["ID"]),
                        label  = TryParse.ToString(drDiscount["D_NAME"]),
                        abbrev = ""
                    });
                }
            }
            return(model);
        }
示例#10
0
        public List <CCardModel> GetCards()
        {
            List <CCardModel> model       = new List <CCardModel>();
            string            commandText =
                @"SELECT cc.ID
       , cc.C_NUMBER
       , cc.VALID_FROM_DATE
       , cc.VALID_TO_DATE
       , cc.IS_BLOCKED
       , cc.CONTRACTOR_ID
 FROM C_CARD cc
 ORDER BY cc.C_NUMBER ";

            using (DataTable dtCCards = FillDataTable(commandText))
            {
                foreach (DataRow drCCard in dtCCards.Rows)
                {
                    model.Add(new CCardModel()
                    {
                        CardId       = TryParse.ToInt32(drCCard["ID"]),
                        CNumber      = TryParse.ToString(drCCard["C_NUMBER"]),
                        ValidFrom    = TryParse.ToDateTime(drCCard["VALID_FROM_DATE"]),
                        ValidTo      = TryParse.ToDateTime(drCCard["VALID_TO_DATE"]),
                        IsBlocked    = (TryParse.ToInt32(drCCard["IS_BLOCKED"]) == 1),
                        ContractorId = TryParse.ToInt32(drCCard["CONTRACTOR_ID"])
                    });
                }
            }
            return(model);
        }
        public void EnumTryParseTestOk(string input, bool expected, Whatever expectedResult)
        {
            var ok = TryParse.EnumTryParse(input, out Whatever whatever);

            Assert.That(ok, Is.EqualTo(expected));
            Assert.That(whatever, Is.EqualTo(expectedResult));
        }
示例#12
0
        /// <summary>
        /// Добавя карта
        /// </summary>
        public void Add(CCardModel model)
        {
            string commandText =
                @"INSERT INTO C_CARD
  ( C_NUMBER, VALID_FROM_DATE, VALID_TO_DATE, IS_BLOCKED, CONTRACTOR_ID, DISCOUNT_GROUP_ID, OWNER_NAME
  , CAR_NUMBER, IS_INVOICE, IS_MANUAL_INPUT, C_PASSWORD, C_COMMENT, S_PAYMENT_TYPE_ID )
 VALUES (" + SQLString(model.CNumber) +
                ", " + SQLDateTime(model.ValidFrom) +
                ", " + SQLDateTime(model.ValidTo) +
                ", " + SQLInt(model.IsBlocked) +
                ", " + SQLInt(model.ContractorId) +
                ", " + SQLInt(model.DiscountGroupId) +
                ", " + SQLString(model.OwnerName) +
                ", " + SQLString(model.CarNumber) +
                ", " + SQLInt(model.IsInvoice) +
                ", " + SQLInt(model.IsManualInput) +
                ", " + SQLString(model.Password) +
                ", " + SQLString(model.Comment) +
                ", " + SQLInt(model.PaymentTypeId) +
                @")
 
SELECT @@IDENTITY";

            model.CardId = TryParse.ToInt32(ExecuteScalar(commandText));
        }
示例#13
0
 private static void DoIf <TIn, TOut>(TIn value, TryParse <TIn, TOut> tryParse, Action <TOut> action)
 {
     if (tryParse(value, out var result))
     {
         action(result);
     }
 }
示例#14
0
        public static bool TryParse(string input, TryParse <T> elementParser, out CompositeInterval <T> interval)
        {
            var result = CompositeInterval <T, DefaultValueComparer <T> > .TryParse(input, elementParser, out var comparerInterval);

            interval = comparerInterval;
            return(result);
        }
示例#15
0
        private static Formlet <T> GetNonNull <T>(HttpContextEx ctx, string name, TryParse <T> try_parse)
            where T : struct
        {
            T value = default(T);

            return(try_parse(ctx[name], out value) ? (Formlet <T>)value : (MissingError)name);
        }
示例#16
0
        public List <DiscountModel> GetDiscounts()
        {
            List <DiscountModel> model = new List <DiscountModel>();
            string commandText         =
                @"SELECT d.ID AS DISCOUNT_ID
       , d.D_NAME
       , d.VALID_FROM_DATE
       , d.VALID_TO_DATE
       , d.DISCOUNT_KIND_ID
       , dk.DK_NAME
       , d.D_VALUE
 FROM DISCOUNT d
 LEFT JOIN DISCOUNT_KIND dk ON dk.ID = d.DISCOUNT_KIND_ID
 ORDER BY d.D_NAME ";

            using (DataTable dtDiscounts = FillDataTable(commandText))
            {
                foreach (DataRow drDiscount in dtDiscounts.Rows)
                {
                    model.Add(new DiscountModel()
                    {
                        DiscountId       = TryParse.ToInt32(drDiscount["DISCOUNT_ID"]),
                        Name             = TryParse.ToString(drDiscount["D_NAME"]),
                        DiscountKindId   = TryParse.ToInt32(drDiscount["DISCOUNT_KIND_ID"]),
                        DiscountKindName = TryParse.ToString(drDiscount["DK_NAME"]),
                        ValidFrom        = TryParse.ToDateTime(drDiscount["VALID_FROM_DATE"]),
                        ValidTo          = TryParse.ToDateTime(drDiscount["VALID_TO_DATE"]),
                        Value            = TryParse.ToDecimal(drDiscount["D_VALUE"]),
                    });
                }
            }
            return(model);
        }
示例#17
0
        /// <summary>
        /// Списък контрагенти
        /// </summary>
        public List <ListItemModel> GetList(string term)
        {
            List <ListItemModel> model = new List <ListItemModel>();
            string termValue           = (String.IsNullOrWhiteSpace(term) || term.Equals("*")) ? "" : term;

            string commandText =
                @"SELECT TOP 15 c.ID, c.C_NAME
 FROM CONTRACTOR c
 WHERE c.C_NAME LIKE N'%" + termValue + @"%'
 ORDER BY c.C_NAME ";

            using (DataTable dtItems = FillDataTable(commandText))
            {
                foreach (DataRow drItem in dtItems.Rows)
                {
                    model.Add(new ListItemModel()
                    {
                        id     = TryParse.ToString(drItem["ID"]),
                        label  = TryParse.ToString(drItem["C_NAME"]),
                        abbrev = ""
                    });
                }
            }
            return(model);
        }
示例#18
0
        /// <summary>
        /// Списък групи отстъки
        /// </summary>
        public List <ListItemModel> GetGroupList()
        {
            List <ListItemModel> model = new List <ListItemModel>();

            model.Add(new ListItemModel()
            {
                id     = "-1",
                label  = "Без отстъпка",
                abbrev = ""
            });
            string commandText =
                @"SELECT dg.ID, dg.DG_NAME
 FROM DISCOUNT_GROUP dg
 ORDER BY dg.DG_NAME ";

            using (DataTable dtDiscounts = FillDataTable(commandText))
            {
                foreach (DataRow drDiscount in dtDiscounts.Rows)
                {
                    model.Add(new ListItemModel()
                    {
                        id     = TryParse.ToString(drDiscount["ID"]),
                        label  = TryParse.ToString(drDiscount["DG_NAME"]),
                        abbrev = ""
                    });
                }
            }
            return(model);
        }
示例#19
0
        public ContractorModel GetContractor(int id)
        {
            ContractorModel model       = null;
            string          commandText =
                @"SELECT cnt.ID AS CONTRACTOR_ID
       , cnt.CONTRACTOR_TYPE_ID
       , cnt.C_NAME
       , cnt.ID_CONTRACTOR
       , cnt.S_TOWN_ID
       , cnt.C_ADDRESS
       , ISNULL(c_cmp.ACCOUNTABLE_PERSON, '') AS ACCOUNTABLE_PERSON
 FROM CONTRACTOR cnt
 LEFT JOIN CONTRACTOR_COMPANY c_cmp ON c_cmp.CONTRACTOR_ID = cnt.ID
 WHERE cnt.ID = " + SQLInt(id);

            using (DataTable dtContractors = FillDataTable(commandText))
            {
                if (dtContractors.Rows.Count > 0)
                {
                    DataRow drContractor = dtContractors.Rows[0];
                    model = new ContractorModel()
                    {
                        ContractorId      = TryParse.ToInt32(drContractor["CONTRACTOR_ID"]),
                        Name              = TryParse.ToString(drContractor["C_NAME"]),
                        ContractorTypeId  = TryParse.ToInt32(drContractor["CONTRACTOR_TYPE_ID"]),
                        IdContractor      = TryParse.ToString(drContractor["ID_CONTRACTOR"]),
                        TownId            = TryParse.ToInt32(drContractor["S_TOWN_ID"]),
                        Address           = TryParse.ToString(drContractor["C_ADDRESS"]),
                        AccountablePerson = TryParse.ToString(drContractor["ACCOUNTABLE_PERSON"])
                    };
                }
            }
            return(model);
        }
示例#20
0
        public DiscountModel GetDiscount(int id)
        {
            DiscountModel model       = null;
            string        commandText =
                @"SELECT d.ID AS DISCOUNT_ID
       , d.D_NAME
       , d.VALID_FROM_DATE
       , d.VALID_TO_DATE
       , d.DISCOUNT_KIND_ID
       , dk.DK_NAME
       , d.D_VALUE
 FROM DISCOUNT d
 LEFT JOIN DISCOUNT_KIND dk ON dk.ID = d.DISCOUNT_KIND_ID
 WHERE d.ID = " + SQLInt(id);

            using (DataTable dtDiscounts = FillDataTable(commandText))
            {
                if (dtDiscounts.Rows.Count > 0)
                {
                    DataRow drDiscount = dtDiscounts.Rows[0];
                    model = new DiscountModel()
                    {
                        DiscountId       = TryParse.ToInt32(drDiscount["DISCOUNT_ID"]),
                        Name             = TryParse.ToString(drDiscount["D_NAME"]),
                        DiscountKindId   = TryParse.ToInt32(drDiscount["DISCOUNT_KIND_ID"]),
                        DiscountKindName = TryParse.ToString(drDiscount["DK_NAME"]),
                        ValidFrom        = TryParse.ToDateTime(drDiscount["VALID_FROM_DATE"]),
                        ValidTo          = TryParse.ToDateTime(drDiscount["VALID_TO_DATE"]),
                        Value            = TryParse.ToDecimal(drDiscount["D_VALUE"]),
                    };
                }
            }
            return(model);
        }
示例#21
0
 private static void setRequestParam(HttpRequest request, string param)
 {
     if (!string.IsNullOrEmpty(param))
     {
         string[] paramNameValue = param.Split(':');
         string   value          = string.Empty;
         if (paramNameValue[0] == HttpHeader.Cookie)
         {
             request.Cookies = ParseCookie(paramNameValue[1]);
         }
         else if (paramNameValue[0] == HttpHeader.ContentLength)
         {
             request.Parameters.Add(paramNameValue[0], paramNameValue[1]);
             request.ContentLength = TryParse.Int32(paramNameValue[1]);
         }
         else if (paramNameValue[0] == HttpHeader.Connection)
         {
             request.Parameters.Add(paramNameValue[0], paramNameValue[1]);
             request.ShouldKeepAlive = paramNameValue[1] == HttpHeader.ConnectionKeepAlive;
         }
         else
         {
             for (int i = 1, icount = paramNameValue.Length; i < icount; i++)
             {
                 value = string.Concat(value, i > 1 ? ":" : string.Empty, paramNameValue[i].Trim());
             }
             request.Parameters.Add(paramNameValue[0], value);
         }
     }
 }
示例#22
0
        public DiscountGroupModel GetDiscountGroup(int id)
        {
            DiscountGroupModel model       = null;
            string             commandText =
                @"SELECT dg.ID AS DISCOUNT_GROUP_ID
       , dg.DG_NAME
       , (SELECT ',' + cast(sgi.DISCOUNT_ID AS nvarchar(MAX)) AS [text()]
          FROM DISCOUNT_GROUP_ITEM sgi
          WHERE sgi.DISCOUNT_GROUP_ID = dg.ID
          For XML PATH ('')
         ) + ',' AS DISCOUNT_LIST
 FROM DISCOUNT_GROUP dg
 WHERE dg.ID = " + SQLInt(id);

            using (DataTable dtDiscounts = FillDataTable(commandText))
            {
                if (dtDiscounts.Rows.Count > 0)
                {
                    DataRow drDiscount = dtDiscounts.Rows[0];
                    model = new DiscountGroupModel()
                    {
                        DiscountGroupId = TryParse.ToInt32(drDiscount["DISCOUNT_GROUP_ID"]),
                        Name            = TryParse.ToString(drDiscount["DG_NAME"]),
                        DiscountList    = TryParse.ToString(drDiscount["DISCOUNT_LIST"])
                    };
                }
            }
            return(model);
        }
示例#23
0
        public static T ParseMetadata <T>(
            this IDictionary <string, string?> metadata,
            string[] keys,
            TryParse <T> tryParse,
            T defaultValueIfPresent,
            T defaultValueIfNotPresent)
        {
            foreach (string key in keys)
            {
                if (!metadata.TryGetValue(key, out string?value))
                {
                    continue;
                }

                if (string.IsNullOrEmpty(value))
                {
                    return(defaultValueIfPresent);
                }

                if (tryParse(value, out var parsed))
                {
                    return(parsed);
                }

                ErrorContext.Current?.RegisterError(
                    $"Unable to parse attribute '{key}' with value '{value}' as as type '{typeof(T).Name}'. ");

                return(defaultValueIfPresent);
            }

            return(defaultValueIfNotPresent);
        }
示例#24
0
        /// <summary>
        /// Филтриран списък отстъки
        /// </summary>
        public List <ListItemModel> GetFilterList(string term)
        {
            List <ListItemModel> model = new List <ListItemModel>();
            string filter      = ((term == "*") ? "'%'" : String.Format("'%{0}%'", term));
            string commandText =
                @"SELECT TOP 20 d.ID
       , d.D_NAME
 FROM DISCOUNT d
 WHERE d.D_NAME LIKE " + filter + @"
 ORDER BY d.D_NAME ";

            using (DataTable dtDiscounts = FillDataTable(commandText))
            {
                foreach (DataRow drDiscount in dtDiscounts.Rows)
                {
                    model.Add(new ListItemModel()
                    {
                        id     = TryParse.ToString(drDiscount["ID"]),
                        label  = TryParse.ToString(drDiscount["D_NAME"]),
                        abbrev = ""
                    });
                }
            }
            return(model);
        }
示例#25
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="value"></param>
 /// <param name="sb"></param>
 protected override void BuildParameterName(object value, ref StringBuilder sb)
 {
     if (this.NeedParams && this.Provider != null)
     {
         ParamInfo p = this.Provider.BuildParamInfo(false, this._ParamList, value, this._CurrentMemberInfo, ref this._paramIndex);
         this._ParamList.Add(p);
         this._paramIndex++;
         sb.Append(this.Provider.BuildSpecialName(p.Name));
     }
     else
     {
         if (value.GetType().IsStringType())
         {
             string text = TryParse.ToString(value);
             sb.Append("'");
             sb.Append(text);
             sb.Append("'");
         }
         else
         {
             string text = TryParse.ToString(value);
             sb.Append(text);
         }
     }
 }
示例#26
0
        public static T GetInput <T>(
            TryParse <T> tryParse    = null,
            string prompt            = null,
            string invalidMessage    = null,
            Predicate <T> validation = null)
        {
            if (tryParse is null && (typeof(T) != typeof(string) && !typeof(T).IsEnum && Meta.GetTryParseMethod <T>() is null))
            {
                throw new InvalidOperationException($"Using {nameof(ConsoleHandler)}.{nameof(GetInput)} without providing a {nameof(tryParse)} delegate for a non-supported type {typeof(T).Name}.");
            }

            tryParse ??= typeof(T) == typeof(string)
                ? (string s, out T v) => { v = (T)(object)s; return(true); }
            : (TryParse <T>)TryParse;
            validation ??= v => true;


GetInput:
            Console.Write(prompt ?? $"Input a {typeof(T).Name} value: ");

            if (!tryParse(Console.ReadLine(), out T value) || !validation(value))
            {
                Console.WriteLine(invalidMessage ?? $"Invalid input. Try again...");
                goto GetInput;
            }

            return(value);
        }
示例#27
0
            static void Success()
            {
                var guid = System.Guid.NewGuid();

                Assert.Equal(TryParse.Guid(guid.ToString()), Some(guid));
                Assert.Equal(TryParse.Guid(guid.ToString("X"), "X"), Some(guid));
            }
示例#28
0
        private static Formlet <Nullable <T> > GetNullable <T>(string s, TryParse <T> try_parse)
            where T : struct
        {
            T n = default(T);

            return(try_parse(s, out n) ? (n) : default(T?));
        }
示例#29
0
 protected override bool ProcessDataGridViewKey(KeyEventArgs e)
 {
     if (e.KeyData == Keys.Down)
     {
         if (this.SelectedRows.Count > 0 && this.SelectedRows[0].Index == this.RowCount - 1)
         {
             this.RowCount++;
             if (OnRowDefaultValue != null)
             {
                 OnRowDefaultValue(this, new DefaultValueEventArgs(this.RowCount - 1));
             }
         }
     }
     else if (e.Control && e.KeyCode == Keys.Delete)
     {
         if (ForzenColumn != null && this.SelectedRows.Count > 0)
         {
             if (!string.IsNullOrEmpty(TryParse.ToString(this[ForzenColumn.Index, SelectedRows[0].Index].Value)))
             {
                 if (MessageBoxHelper.ShowQuestion("确定删除当前行吗?") == DialogResult.OK)
                 {
                     this.Rows.RemoveAt(this.SelectedRows[0].Index);
                     this.RowCount++;
                 }
             }
         }
     }
     return(base.ProcessDataGridViewKey(e));
 }
示例#30
0
 public static T ParseMetadata <T>(
     this IDictionary <string, string> metadata,
     string key,
     TryParse <T> tryParse,
     T defaultValueIfPresent,
     T defaultIfNotPresent)
 {
     if (metadata.TryGetValue(key, out string value))
     {
         if (string.IsNullOrEmpty(value))
         {
             return(defaultValueIfPresent);
         }
         else if (tryParse(value, out T parsed))
         {
             return(parsed);
         }
         else
         {
             ErrorContext.Current?.RegisterError($"Unable to parse attribute '{key}' with value '{value}' as as type '{typeof(T).Name}'. ");
             return(defaultValueIfPresent);
         }
     }
     else
     {
         return(defaultIfNotPresent);
     }
 }