That's because protected internal
should be read as "protected or internal" (i.e., visible to any class within the same assembly or any class derived from A
regardless of its location), and not as "protected and internal".
From MSDN:
The type or member can be accessed by any code in the assembly in which it is declared, or from within a derived class in another assembly. Access from another assembly must take place within a class declaration that derives from the class in which the protected internal element is declared, and it must take place through an instance of the derived class type.
i want that only the data member can be override or call from same assembly then what i need to do
Then just mark it as internal
and virtual
.