I'm attempting to override a base property like so:

```
public class Node {}
public class SubNode : Node { }

public class NodeViewModel<T> where T : Node
{
    public virtual T Data { get; set; }
}
public class SubNodeViewModel : NodeViewModel<SubNode>
{
    public override SubNode Data { get; set; }
}

...
List<NodeViewModel<Node>> l = new List<NodeViewModel<Node>>();
l.Add(new SubNodeViewModel()); // Cannot convert from SubNodeViewModel to NodeViewModel<Node>
...

```

I think I must be misunderstanding a fundamental of inheritance. Why am I not able to do this?

I guess I'm confused as to why this works:

```
Node node;
SubNode subnode;
node = subnode; // I work just fine!

```

But not this:

```
NodeViewModel<Node> node;
SubNodeViewModel subnode;
node = subnode; // I don't work. Also, I hate you!

```