But not within its own assembly. Is this possible or meaningful without using abstract(even this doesn't let usage within assembly) keyword on base class?
This gives error:
internal Foo<T>{} // trying to stop this being directly used
public Bar:Foo<float>{} // inconsistent visibility, need this to be served
this too:
public sealed Foo<T>{}
public Bar:Foo<float>{} // cannot derive from sealed class
making base class protected/private also doesn't help.
It could have been an interface but I want the base code written only once(interface forces all classes that implemented it to duplicate code), base class has only 1 virtual method and implements 2 interfaces and non-duplicated methods consists %90 of its body.
I want base class be non-usable just like interface(but usable in its own library assembly) but also have many methods and properties defined only once and also implement some other interfaces and have a virtual method but not any abstract method.
Does keyword abstract have any side-effect like bugging a type-checking code to give true instead of false, or making some optimizations of compiler impossible or having incompatibilities between very new or very old versions of C#.Net ?
While I can use it in its assembly(library), protecting it from other libraries is impossible?