今天早上我的大脑根本不工作,所以我希望有人能帮我解决这个问题。
我有一个小辅助方法来检查 IEnumerable 是否为空或没有项目。
public static class ParameterGuard
{
public static void ThrowIfNullOrEmtpy<T>(T enumerable, string argName) where T : IEnumerable
{
if (enumerable == null)
throw new ArgumentNullException(argName);
if (enumerable.HasCountOf(0))
throw new ArgumentException(Resources.ExceptionEnumerableEmpty, argName);
}
public static void ThrowIfNullOrEmpty(string arg, string argName)
{
if (arg == null)
throw new ArgumentNullException(argName);
if (arg.Length == 0)
throw new ArgumentException(Resources.ExceptionStringEmpty, argName);
}
}
我还有一个用于发送电子邮件的小数据结构
public class EmailOptions
{
public string Server { get; set; }
public int Port { get; set; }
public string From { get; set; }
public List<string> To { get; set; }
public List<string> Cc { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public bool IsHtml { get; set; }
}
当我尝试使用 ThrowIfNullOrEmpty 方法验证 To 属性时,出现异常。
private MailMessage CreateEmail(EmailOptions options)
{
ParameterGuard.ThrowIfNullOrEmpty(options.To, "To");
...
}
例外
The best overloaded method match for
ParameterGuard.ThrowIfNullOrEmpty(string, string)' has some invalid arguments
我原以为IList<>类实现了 IEnumerable ,这会起作用。
我会很感激有人为我解决这个问题。