【发布时间】:2013-10-17 08:48:04
【问题描述】:
今天早上我的大脑完全不工作,所以我希望有人能帮我解决这个问题。
我有一个小助手方法可以检查 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,这会起作用。
如果有人帮我解决这个问题,我将不胜感激。
【问题讨论】:
-
如果是复制/粘贴代码,可能是因为第一个函数调用的是
ThrowIfNullOrEmtpy,而不是ThrowIfNullOrEmpty。 -
你确定吗?我们无法重现问题
-
@SWeko ;你说得对。这是一个错字。您要创建并回答积分吗
-
这个问题似乎离题了,因为它过于本地化(有一个不明显的错字)
标签: c# .net list generics ienumerable