Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁止扩展方法_C# - Fatal编程技术网

C# 禁止扩展方法

C# 禁止扩展方法,c#,C#,我正在发布一个公共类,作为我的C#框架的一部分,以便用户能够在我的应用程序中注册。我不希望用户扩展我的类,所以我将其标记为密封的。现在我有一些用户报告说,他们在该类中看到的方法比我提供的方法更多。经过一些调查,这些用户似乎已经定义了扩展方法,这些扩展方法显示(通过intellisense)就像它们是在我的公共密封类中定义的一样 问题 有什么方法可以禁止用户在我的公共密封类上定义扩展方法吗?不,你不能。老实说,我不明白你为什么要这么做。如果您有想要使用扩展方法的用户,请让他们这样做。没有人会强迫他

我正在发布一个公共类,作为我的C#框架的一部分,以便用户能够在我的应用程序中注册。我不希望用户扩展我的类,所以我将其标记为密封的。现在我有一些用户报告说,他们在该类中看到的方法比我提供的方法更多。经过一些调查,这些用户似乎已经定义了扩展方法,这些扩展方法显示(通过intellisense)就像它们是在我的公共密封类中定义的一样

问题
有什么方法可以禁止用户在我的公共密封类上定义扩展方法吗?

不,你不能。老实说,我不明白你为什么要这么做。如果您有想要使用扩展方法的用户,请让他们这样做。没有人会强迫他们这么做,这可能会让他们的生活更轻松。至少由于您的类型是密封的,您知道如果有人报告意外可用的方法,那么它们必须是扩展方法


请注意,任何人都可以在
对象
上定义扩展方法,即使有一种方法可以禁止仅在您的类上使用扩展方法,这种方法也始终可用。

我很好奇。。。为什么要禁止他们编写扩展方法?毕竟,他们只能从扩展方法调用类的公共成员。另一种表达问题的方式是“我有没有办法禁止人们在自己的静态类上编写一个以我的对象为第一个参数的静态方法”(扩展方法是围绕这一点的语法糖)。答案当然是否定的。@miroslavpovic我想避免intellisense noiseThanks Jon,我只想让我的课堂看起来干净整洁intellisense@GETah:在我看来,是你自己的用户让它变得“肮脏”——所以让他们自己决定吧。如果他们想要一个“干净”的智能感知,他们不应该添加扩展方法。如果他们没有,你是谁来阻止他们?