public TypeDefinition GenerateClass()
        {
            var commandClass = new TypeDefinition(
                GeneratedCommandClassNamespace
                , GeneratedCommandClassName
                , DefaultTypeDAttributesForCommand
                , Assets.TypeReferences.Object);

            commandClass.Interfaces.Add(new InterfaceImplementation(Assets.TypeReferences.ICommand));

            var genericParameter = new GenericParameter("TParameter", commandClass);

            commandClass.GenericParameters.Add(genericParameter);


            AddFields(commandClass);
            AddConstructors(commandClass);
            AddDExecuteMethod(commandClass);
            AddDCanExecuteMethod(commandClass);
            Assets.AddCanExecuteChangedEvent(commandClass);

            ModuleDefinition.Types.Add(commandClass);
            Assets.DelegateCommandImplementationWasInjected = true;
            return(commandClass);
        }
 internal void ImplementICommandInterface(TypeDefinition commandType)
 {
     commandType.Interfaces.Add(new InterfaceImplementation(Assets.TypeReferences.ICommand));
     Assets.AddCanExecuteChangedEvent(commandType);
     AddNCanExecuteMethod(commandType);
     AddNExecuteMethod(commandType);
 }