65.9K
CodeProject 正在变化。 阅读更多。
Home

参数助手

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.80/5 (5投票s)

2009年3月20日

CPOL
viewsIcon

26067

downloadIcon

135

一个参数助手,用于检查传递给方法中的参数。

引言

此代码示例展示了如何使您的公共方法更安全地使用。特别是,如果它们要作为库被其他人使用,而这些人无法访问源代码。

背景

我想分享一些功能,以帮助公共方法/属性的参数检查。程序集中所有 public/internal 方法都应该具有适当的参数检查,并抛出适当的异常。

  • ArgumentNullException – 当必须指定参数时,传递了 null
  • ArgumentException – 传递的参数由于某种原因无效。

使用代码

显然,异常应该只在适当的时候抛出,但是如果您的方法中的代码要求参数处于某种状态,则需要确保这一点。为此,我添加了一些助手

ArgumentHelper.AssertEnumMember<T>(enumArgument);
ArgumentHelper.AssertEnumMember<T>(enumArgument, enumValuesValid[]);
ArgumentHelper.AssertNotNull<T>(notNullArgument, " notNullArgument ");
ArgumentHelper.AssertNotEmptyAndNotNull(notEmptyAndNotNullArgument, 
               "notEmptyAndNotNullArgument");

它们非常容易理解,但对于简单的检查很有用。

/// <summary>
/// Retrieves all available plugins based on plugin type.
/// </summary>
/// <param name="pluginType">Type of plugins to get.</param>
/// <param name="plugins">List to populate.</param>
/// <param name="pluginFile">Some plugin file.</param>
/// <param name="canBeNull">Can be null string.</param>
/// <returns>True if successful.</returns>
public static bool GetAllPlugins(PluginType pluginType, IList<string> plugins, 
                                 string pluginFile, string canBeNull)
{
    ArgumentHelper.AssertEnumMember<PluginType>(pluginType, 
                   new PluginType[] {PluginType.Global, PluginType.Packager}); 
    ArgumentHelper.AssertNotNull<IList<string>>(plugins, "plugins");
    ArgumentHelper.AssertNotEmptyAndNotNull(pluginFile, "pluginFile"); 

    if (canBeNull == null) //can be null so need need to check above.
      return false;
}

历史

  • 2009/3/20 - 上传。
© . All rights reserved.