Introduction
This code example shows how to make your public methods safer to use. Especially, if they are to be used as libraries by others who don't have access to the source code.
Background
I thought I would share some functionality to help argument checking for public methods/properties. All public
/internal
methods in assemblies should have appropriate argument checking and throw the appropriate exceptions:
ArgumentNullException
– A null
was passed when an argument must be specified.
ArgumentException
– An argument passed was invalid for a certain reason.
Using the code
Obviously, the exceptions should only be thrown where appropriate, but if the code within your method requires the arguments to be in a certain state, you need to ensure it. To this end, I have added some helpers:
ArgumentHelper.AssertEnumMember<T>(enumArgument);
ArgumentHelper.AssertEnumMember<T>(enumArgument, enumValuesValid[]);
ArgumentHelper.AssertNotNull<T>(notNullArgument, " notNullArgument ");
ArgumentHelper.AssertNotEmptyAndNotNull(notEmptyAndNotNullArgument,
"notEmptyAndNotNullArgument");
They are pretty self explanatory, but are useful for throwing for simpler checking.
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)
return false;
}
History