using System; namespace SomeSuspeciousAssembly { class SomeSuspeciousClass { //Some junk malicious code } } namespace ConsoleApplication1 { abstract class MyBase where T : MyBase { public void MyMethod() { Console.WriteLine("MyMethod"); } } class MyDerived : MyBase { } class MyOtherDerived : MyBase//Gives error. Should not be done. { } class Program { static void Main(string[] args) { MyBase obj = new MyDerived(); obj.MyMethod(); Console.ReadLine(); } } }