我想重載一個泛型列表的Add方法,所以我可以用集合初始化,如:重載泛型列表的添加與擴展方法
var x = new List<Tuple<string>> { { "1", "2" }, { "1", "2" } };
(如果元組是一個二進制元組的一個簡單的自定義實現) 但是,我創建了一個擴展方法,在cs文件中放入一個using指令,並仍然得到「No overload for method'Add'需要2個參數」--error。
是否可以做(使用擴展方法)?
擴展方法代碼:
namespace ExtensionMethods {
public static class Extensions{
public static void Add<T>(this List<Tuple<T>> self, T value1, T value2) {
self.Add(new Tuple<T> { value1, value2 });
}
}
}
我想這是不可能的,因爲你要如何使用它,以及如何對象初始化工作的差異。雖然有人可能會對此提出建議。此外我懷疑對象初始化器將與擴展方法一起使用。 – Snowbear 2011-03-28 10:46:57
有趣的是,在[Visual Basic](http://msdn.microsoft.com/en-us/library/dd293683.aspx)中支持這種** ** – Blorgbeard 2011-03-28 11:24:46
存在連接問題,如果您希望看到它也添加到C#中:https://connect.microsoft.com/VisualStudio/feedback/details/459307/extension-add-methods-are-not-considered-in-c-collection-initializers – jeroenh 2011-05-03 14:56:51