Unnecessarily long class name because of generic types
So I have a class with a wrapper class inside like so:

    public class RandomClass<TK, TV>
    {
        internal class RandomClassWrapper<TK, TV> : RandomClass<TK, TV> {}
    }

Now the reason for this is, that RandomClassWrapper is using the `new` keyword, to override the behaviour of some of the methods in RandomClass. This is because I only want my library to be able to access these functions.

It also needs to modify some of the private variables in RandomClass, which is why it is nested.

However, When I want to initialize this, I have to go 

    var rc = new RandomClass<int, int>.RandomClassWrapper<int, int>();

Why is that first `<int, int>` required? Why couldn't it just be wrote like this:

    var rc = new RandomClass.RandomClassWrapper<int, int>();

Is there any way that I can avoid having to type that extra `<int, int>` which can turn into things like: `<Dictionary<string, nameofclass>, List<thisistoolong>>`

That is an exaggeration, but you understand what I mean. Having to put those types twice is a huge waste of space. can anyone suggest a different approach?
Unnecessarily long class name because of generic types
===

So I have a class with a wrapper class inside like so:

    public class RandomClass<TK, TV>
    {
        internal class RandomClassWrapper<TK, TV> : RandomClass<TK, TV> {}
    }

Now the reason for this is, that RandomClassWrapper is using the `new` keyword, to override the behaviour of some of the methods in RandomClass. This is because I only want my library to be able to access these functions.

It also needs to modify some of the private variables in RandomClass, which is why it is nested.

However, When I want to initialize this, I have to go 

    var rc = new RandomClass<int, int>.RandomClassWrapper<int, int>();

Why is that first `<int, int>` required? Why couldn't it just be wrote like this:

    var rc = new RandomClass.RandomClassWrapper<int, int>();

Is there any way that I can avoid having to type that extra `<int, int>` which can turn into things like: `<Dictionary<string, nameofclass>, List<thisistoolong>>`

That is an exaggeration, but you understand what I mean. Having to put those types twice is a huge waste of space. can anyone suggest a different approach?