I am using [Moq](https://github.com/Moq/moq4/wiki/Quickstart) and I realize In this situation I got the `Ambiguous match found` exception that I need help: 

Here is my models:

```
public class User
{
}

public class CustomUser
{
}

```

Some classes: 

```
public class BaseClass
{
    public virtual User User { get; set; }
}

public class Father : BaseClass
{
    public virtual new CustomUser User { get; set; }
}

public class Child : Father
{
}

```

And finally: 

```
void Main()
{
    var user = new Mock<CustomUser>();
    var child = new Mock<Child>();
    child.SetupGet(x=>x.User).Returns (user.Object);  // Ambiguous match found.
}

```

---

**Update:**  

Why am I using this?!
Because I'm coding `MVC-WebAPI` and I have a `BaseController` which inherits the `ApiController`.  

OK, in the `ApiController` we have a `IPrincipal User` property that I overrided it with my `ICustomPrinciple` implementation ([this link](https://stackoverflow.com/questions/1064271/asp-net-mvc-set-custom-iidentity-or-iprincipal)).  

Now I want to mock for example `ProductController : BaseController`.

```
var controller = new Mock<ProductController>();
var user = new Mock<CustomPrincipal>();

user.SetupGet(x => x.FullName).Returns("some full name");

controller.SetupGet(x => x.UserRoleID).Returns(81);// UserRoleID is getter and I do some stuff here.
controller.SetupGet(x => x.User).Returns(user.Object);

```

Any help will be appreciated.