gpt4 book ai didi

c# - 如何通过扩展方法隐藏成员方法

转载 作者:可可西里 更新时间:2023-11-01 08:40:58 25 4
gpt4 key购买 nike

public static class MyClass
{
public static void Add<T>(this List<T> list, T item)
{
list.Add(item);
Console.WriteLine(item.ToString());
}
}

然后

List<string> list = new List<string>(){"1","2"};
list.Add("3");

但是会调用成员方法。

有没有办法以这种方式调用我的扩展方法

我不想这样调用它:

MyClass.Add(list, item)

最佳答案

你不能。假设实例方法适用,总是优先于扩展方法。成员解析只会在找不到非扩展方法选项时才考虑扩展方法。

我建议您只需重命名您的方法 - 除非重点是使用现有代码透明地调用此方法。

如果你做到了 IList<T>而不是 List<T> ,您可以创建一个实现 IList<T> 的包装器类型并将所有调用委托(delegate)给包装列表,随时执行任何额外任务。然后您可以IList<T> 编写一个扩展方法它创建了包装器——在某些情况下允许更流畅的语法。就个人而言,我更喜欢包装器方法来派生新的集合类型,因为这意味着您可以将它与现有集合一起使用,从而使代码更改可能更小……但这完全取决于您要做什么。

关于c# - 如何通过扩展方法隐藏成员方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4655209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com