Urgent........Inheritance.
I want to design a base class in such a way using that i can define only one derived class. if i define another class it should give an error.
The only way you could do that would be to use Reflection at start-up time to check all types in all loaded assemblies and throw an exception if more than one derived class were found.
If only one derived class is allowed, why have a derived class at all?
There aren't any really good answers to that one. Although, I've always thought it would be nice to have something that allowed you to limit the derived classes of a base class. You could, for instance, limit the derivations from XmlNode to the set of valid XmlNode types. The closest thing I have seen in any language, though, is Java's enumerations.
To answer your question, if the base class and derived class exist in the same DLL, you could always make the base class's constructor have internal visibility. Can you tell us more about what you're trying to do? It might help find a better answer.