今天早上我的大腦根本沒有工作,所以我希望有人能爲我解決這個問題。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;你是對的。這是一個錯字。你想創建和回答的點 –