I have code like this:

```
class Base { }

class Derived : Base { }

class Wrapper<T> {

    public T Value { get; }

    public Wrapper (T value) { Value = value; }
}

```

I would like to use `Wrapper` like this:

```
Wrapper<Base> wrapper = new Wrapper<Derived> (new Derived ());

```

But it ends up with this error:

> 
> Error CS0029 Cannot implicitly convert type 'Wrapper<Derived>' to 'Wrapper<Base>'
> 
> 
> 

I tried creating method in `Wrapper` `class` that would act as converter

```
public Wrapper<TResult> To<TResult> () /* Constraints needed here. */ =>
    new Wrapper<TResult> (Value);

```

But I'm missing some valid constraints. Current code ends up with error:

> 
> S1503 Argument 1: cannot convert from 'T' to 'TResult'
> 
> 
> 

I would imagine constraints on `To` method could look like `where T : TResult`, but that's not valid constraints.

Any ways to implement converter from `Wrapper<Derived>` to `Wrapper<Base>` easily?