c# – “你必须在奇怪的情况下添加对程序集的引用”编译器错误
发布时间:2020-12-15 21:22:35 所属栏目:百科 来源:网络整理
导读:我有两个应用程序App1和App2. App1添加了对App2的引用,App2添加了对System.Drawing的引用. 在App2中有一个带有两个重载的函数,第一个是受保护的,有一个来自System.Drawing.Bitmap的参数,第二个是public有一个整数参数. namespace App1Namespace{ class Progr
我有两个应用程序App1和App2. App1添加了对App2的引用,App2添加了对System.Drawing的引用.
在App2中有一个带有两个重载的函数,第一个是受保护的,有一个来自System.Drawing.Bitmap的参数,第二个是public有一个整数参数. namespace App1Namespace { class Program { static void Main(string[] args) { App2Namespace.StaticClass.Func(4); namespace App2Namespace { public class StaticClass { protected static void Func(System.Drawing.Bitmap bitmapParam) { } public static void Func(int intParam) { } 构建App1时,将抛出以下编译时错误:
虽然具有Bimap param的Func受到保护,但App1需要引用System.Drawing. 问题是为什么App1需要System.Drawing?以及为什么只有在调用第二个重载时才出现此错误,并且在调用另一个重载(例如有两个参数)时不会出现此错误? 注意:当第一个重载变为私有时,错误将消失. 解决方法
原因很可能是因为您将StaticClass声明为常规类.因此可以在任何引用程序集中覆盖该类(因此,为什么使用protected对静态方法几乎有意义).如果所有方法都是真正的静态方法,那么使类本身为静态,并将范围从protected更改为internal或private.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |