Not if the type (with the protected element) is internal in itself. Internal types cannot be part of a public / secure API, as the consumer will not be able to use it.
However, you can use the open interface for the abstract type - i.e.
public interface IFoo {}
internal class Foo : IFoo {}
public class Bar {
protected void Test(IFoo foo) {}
}
The following generalizations may also be useful for this:
protected void Test<T>(T foo) where T : IFoo { }
source
share