using System;
public interface IFoo { }
public interface IFooWrapper<I> where I : IFoo { }
public class Foo : IFoo { }
public class FooWrapper : IFooWrapper<Foo> { }
class Tester
{
void Test()
Register(new FooWrapper());
}
void Register<T>(IFooWrapper<T> foo) where T: IFoo