using System.Collections.Generic;
public static class DataStore{
public static List<T> ListObjects<T, U>(){
public static List<BaseGenericType<BaseType>> ListEntityView<T, U>()
where T : BaseGenericType<BaseType>, new()
where U : BaseType, new()
return DataStore.ListObjects<BaseGenericType<BaseType>, U>();
public class BaseGenericType<T>{
public class DerivedGenericType<T> : BaseGenericType<T> {
public class DerivedType : BaseType{
public static void Main()
ListEntityView<DerivedGenericType<DerivedType>, DerivedType>();