6
Ten kod nie kompiluje:Metoda chroniona wewnętrznego nie pozwalając klas wewnętrznych jako parametr
internal class Foo {}
public abstract class SomeBaseClass
{
protected internal void ProcessFoo(Foo value)
{
// doing something...
}
}
kompilacji nie stwierdzając:
Niekonsekwetne dostępność: typ parametru Foo
jest mniej dostępny niż metody SomeBaseClass.ProcessFoo
Kompilator jest poprawna: 'internal' jest mniej dostępny niż' chronionego internal', co oznacza 'protected' lub' internal'. Klasa w innym zestawie może pochodzić z 'SomeBaseClass' i wywoływać' ProcessFoo'. Zmień dostępność opcji 'ProcessFoo' na' internal' lub zmień dostępność 'Foo' na' public'. –
To jest wystarczająco dobre, aby być odpowiedzią, @MichaelLiu – Rob
Och, rozumiem, myślałem, że chroniony wewnętrzny jest addytywny (chroniony, wewnętrzny), a nie alternatywny (chroniony/wewnętrzny). To jest niefortunne. –