【问题标题】:Standarised Validation and Error checking C#标准化验证和错误检查 C#
【发布时间】:2016-03-10 11:21:29
【问题描述】:

我目前正在开发一个项目,该项目处理许多类型的输入,这些输入具有诸如介于 0 和 1 之间的双精度值之类的约束。我正在考虑通过使用我会调用来验证的类以标准化的方式验证此输入输入,如果输入错误,将向日志文件抛出结果或抛出异常。

tl;dr : 有没有一种好方法可以在使用日志文件的程序中标准化验证。

例子:

        public void AddTimes(double time1, double time2)
        {
            if (time1 < 0)
            {
                ErrorManager.Validation_MustBeNonNegative(ErrorManager.GetName(new { time1 }), time1.ToString());
            }
            else if (time2 <= 0)
            {
                ErrorManager.Validation_MustBeNonNegativeNonZero(ErrorManager.GetName(new { time1 }), time2.ToString());
            }
        }

【问题讨论】:

  • 您需要提供代码才能真正帮助您解决问题

标签: c# validation logging input error-handling


【解决方案1】:

您可以使用 log4net 从您的自定义方法中进行日志记录。配置和记录到 log4net 是关于 SO 的一个有据可查的主题,因此您应该细化您的问题并再次搜索。

要验证您的值,您需要有一种表达有效范围的方法。 Microsoft 在其框架中包含了一些范围检查功能,但您可以轻松推出自己的:

public static void AssertTimesAreValid(double time1, double time2)
{
                if (time1 < 0)
        {
            ErrorManager.Validation_MustBeNonNegative(ErrorManager.GetName(new { time1 }), time1.ToString());
            throw new ArgumentException("Times are not far enough apart.");
        }
        else if (time2 <= 0)
        {
            ErrorManager.Validation_MustBeNonNegativeNonZero(ErrorManager.GetName(new { time1 }), time2.ToString());
            throw new ArgumentException("Times are not far enough apart.");
        }
}

public void AddTimes(double time1, double time2)
{
    AssertTimesAreValid(time1, time2)

    // Do your work now
}

您的 ErrorManager 需要进行日志记录。

【讨论】:

  • 谢谢你的回答,它肯定涵盖了问题的日志部分,虽然我也想要一个系统,我可以调用一个方法并将一个变量放入其中,看看它是否有效与否(即介于 0 和 1 之间)但 log4net 解决了一半的问题。
  • 更新包括范围检查的例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
相关资源
最近更新 更多