using System.Collections.Generic;
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("DynamicProxyGenAssembly2")]
public static void Main()
var mocker1 = new AutoMocker(MockBehavior.Loose);
mocker1.Combine<IDerivedInterface, IBaseInterface>();
mocker1.GetMock<IDerivedInterface>().Setup(x => x.Foo()).Returns(() => "42");
var mocker2 = new AutoMocker(MockBehavior.Loose);
mocker2.GetMock<IDerivedInterface>().Setup(x => x.Foo()).Returns(() => "42");
mocker2.Combine<IDerivedInterface, IBaseInterface>();
Console.WriteLine("mocker1 - base");
Assert.Equal("42", mocker1.Get<IBaseInterface>().Foo());
Console.WriteLine("mocker1 - derived");
Assert.Equal("42", mocker1.Get<IDerivedInterface>().Foo());
Console.WriteLine("mocker2 - base");
Assert.Equal("42", mocker2.Get<IBaseInterface>().Foo());
Console.WriteLine("mocker2 - derived");
Assert.Equal("42", mocker2.Get<IDerivedInterface>().Foo());
interface IBaseInterface {
interface IDerivedInterface : IBaseInterface {