public static void Main()
Console.WriteLine("Hello World");
SomeService service = new SomeService();
service.Test(new SomeClass());
public interface AbstractServiceInterface<T> where T : BaseClass
public interface SomeServiceInterface
void Test(SomeClass someCLass);
public abstract class BaseClass
public class SomeClass : BaseClass
public abstract class SomeAbstractService<T> : AbstractServiceInterface<T> where T : BaseClass
public virtual void Test(T baseClass)
public class SomeService : SomeAbstractService<SomeClass>, SomeServiceInterface
public new void Test(SomeClass someClass)