C#扩展方法只能在一个类中显示和访问(“私有”)

前端之家收集整理的这篇文章主要介绍了C#扩展方法只能在一个类中显示和访问(“私有”)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C#中是否可以在类上创建扩展方法,但限制类中的可见性/可访问性? (例如,类M中的扩展方法A只能在类Z内访问)

例:

class A
{
     String foo = "";
     String bar = foo.MakeMillionaire("arg");
}

在上面的例子中,我想让扩展方法“MakeMillionaire”将String类扩展为在类A中可见和可访问.我可以通过在类A中的静态类中定义扩展方法来做到这一点吗?

编辑:尝试一个常规的嵌套类产生“错误:扩展方法必须在顶级静态类”中定义.

解决方法

扩展方法只能在静态非泛型外(非嵌套)类中定义.

我通常在这种情况下做的是在同一个文件中的不同命名空间中创建一个单独的静态内部类,然后在该文件中包含该命名空间.

该组件中的其他类仍然可见;避免这种情况的唯一方法是将消费类(您的示例中的A类)移动到自己的程序集,您可能不希望这样做.

猜你在找的C#相关文章