【发布时间】:2008-12-21 13:29:10
【问题描述】:
如果我有一个受保护的方法,我可以传入一个数据类型声明为内部的参数吗?
【问题讨论】:
如果我有一个受保护的方法,我可以传入一个数据类型声明为内部的参数吗?
【问题讨论】:
不,除非类型(带有受保护的成员)本身是内部的。内部类型不能成为公共/受保护 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 { }
【讨论】:
如果包含受保护方法的类在外部可见,则不会。那是因为某些外部类可以派生自该类,并且需要知道参数的类型。
【讨论】: