今天早上我的大脑根本没有工作,所以我希望有人能为我解决这个问题。IList <string>传递给IEnumerable参数
我有一个小辅助方法,检查IEnumerable是否为null或没有项目。
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方法我得到一个异常验证财产损失。
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
你确定吗?我们不能再现问题 –
@Sekeko;你是对的。这是一个错字。你想创建和回答的点 –