在不添加样板文件的情况下执行运行时检查的更好的(易读的)方法
本文关键字:更好 检查 易读 方法 运行时 情况下 添加 文件 执行 | 更新日期: 2023-09-27 18:09:51
我的这段代码占用了太多的垂直空间,而且太啰嗦了。
if (property == null)
{
throw new XamlParseException($"Cannot find a property named '"{Name}'" in the type {underlyingType}");
}
是否有一个等效的方法,但更清晰和紧凑?
形状为ThrowIfNull<XamlParseException>(message)
您可以创建一个扩展方法:
public static class ClassContracts {
public static void ThrowIfNull(this Object item)
{
if(item == null) throw new XamlParseException("Your message here", null);
}
}
这样你就可以使用更少的空间,这就是你所说的,你可以在需要的时候反复使用代码。我有这些库的测试为空等。我喜欢这样做,而不是代码契约,因为这需要二进制重写器,并且取决于您的环境,您的构建系统(如果有的话)可能不支持这样做。最终,代码契约所做的不仅仅是这些,但在必要时,它提供了一种快速而简洁的方法来检查代码中的空值和其他条件,因为您可以创建其他条件,如:
public static void CheckForCondition <T>(this T item, Predicate<T> p, Func<Your_Exception_Type> createException)
{
if(p(item)){throw createException();}
}
有了这个基本方法,你就可以创建其他的方法,创建重载,等等,有了谓词,或者已经创建的异常方法。
public static void CheckForNullCondition<T>(this T item)
{
item.CheckForCondition(x => x == null,
() => new Exception("Item is null"));
}
扩展方法
我不知道这种方法,但你可以自己创建它,或者只是将消息移动到资源文件/内部常量(当然,如果它占用的空间是这样的话)。
如果您可以接受,扩展方法也是可行的选择(我的意思是为PropertyInfo
或任何其他类型提供此类扩展)。