C# 类派生和可访问性

C# 类派生和可访问性,c#,.net,C#,.net,我有这个: class Class1 {...} public class Class2 : Class1 { public void myMethod(){}; } var sth = new Class2(); 现在,我想做sth.myMethod(),但该方法无法访问,为什么?如何解决这个问题?(我不想通过公开Class1来解决这个问题)这是不允许的。编译器将给出如下错误: 可访问性不一致:基类“YourNamespace.Class1”的可访问性不如类“YourNamesp

我有这个:

class Class1
{...}

public class Class2 : Class1
{
   public void myMethod(){};
}


var sth = new Class2();

现在,我想做
sth.myMethod()
,但该方法无法访问,为什么?如何解决这个问题?(我不想通过公开
Class1
来解决这个问题)

这是不允许的。编译器将给出如下错误:

可访问性不一致:基类“YourNamespace.Class1”的可访问性不如类“YourNamespace.Class2”

您不能从可访问性低于要公开的类的类继承

在这种情况下,最好的选择是使用组合而不是继承

public class Class2
{
    private Class1 class1 = new Class1(); // Create an instance instead of inheriting...

    public void MyMethod()
    {
    }
}

这是不允许的。编译器将给出如下错误:

可访问性不一致:基类“YourNamespace.Class1”的可访问性不如类“YourNamespace.Class2”

您不能从可访问性低于要公开的类的类继承

在这种情况下,最好的选择是使用组合而不是继承

public class Class2
{
    private Class1 class1 = new Class1(); // Create an instance instead of inheriting...

    public void MyMethod()
    {
    }
}

这包含与您的问题相关的信息。如果希望基类的子类公开,则必须将其公开。这包含与您的问题相关的信息。如果希望基类的子类公开,则必须将其公开。好的,谢谢您提供的信息。:)好的,谢谢你提供的信息。:)