关于protected方法的直接调用

我们在使用其他第三方库的时候,内部碰见protected类型的方法没办法直接调用,尤其是公司自己开发的dll,前人写的protected类型,

 public class Foo
 {
     protected void GetHello()
     {
         Console.WriteLine("Hello,World");
     }
 }

我们没办法这样写
image
编译会报错,说访问修饰符不对,此时除了反射,我们可以通过扩展方法合理的避免
但是,当我们扩展方法写完后,发现,扩展方法也不能直接调用
此时,我们对原来的方法增加一个关键字internal

 public class Foo
 {
     protected internal void GetHello()
     {
         Console.WriteLine("Hello,World");
     }
 }

public static class FooExtension
{
    public static void GetHelloEx(this Foo foo)
    {
        foo.GetHello();
    }
}

此时扩展方法可以使用,以及我们可以通过扩展方法调用到原先的方法
使用方式:

 internal class Program
 {
     private static void Main(string[] args)
     {
         Foo foo = new Foo();
         foo.GetHelloEx();
     }
 }

posted @ 2025-11-16 20:43  孤沉  阅读(4)  评论(0)    收藏  举报