This question already has an answer here:
On a public class in C# is there a way to make a field/method accessible only to derived classes within the same assembly?
From what I understand protected internal
in C# means the same as protected
or internal
(ie accessible to derived classes or classes from the same assembly), which is not what I need.
If the class is
internal
, there will be no way to sub-class it outside of the assembly. Make the fields/methodsprotected
and you're good to go.If the class must be
public
, use aninternal
sub-class everywhere within your assembly.You can't prevent a class from an external assembly from compiling a call to it, but you can force an exception to occur at runtime if they do by putting this attribute on your protected member:
What if you removed the "internal" only fields/methods from the public class to an internal class. Then all of the classes in that assembly could derive from the internal class: