внутренние методы и структуры данных. - PullRequest
3 голосов
/ 21 декабря 2008

если у меня есть защищенный метод, могу ли я передать параметр, в котором тип данных объявлен как внутренний?

Ответы [ 2 ]

6 голосов
/ 21 декабря 2008

Нет, если только тип (с защищенным членом) не является внутренним. Внутренние типы не могут быть частью публичного / защищенного API, так как потребитель не сможет его использовать.

Однако вы можете рассмотреть возможность использования открытого интерфейса для абстрагирования типа - т.е.

public interface IFoo {}
internal class Foo : IFoo {}
public class Bar {
    protected void Test(IFoo foo) {}
}

Дженерики могут быть полезны и для этого:

protected void Test<T>(T foo) where T : IFoo { }
1 голос
/ 21 декабря 2008

Нет, если класс, содержащий защищенный метод, виден снаружи. Это связано с тем, что некоторый внешний класс может быть производным от этого класса, и ему необходимо знать тип параметра.

...