Convert binary tree to doubly linked list
Naming  


I personally prefer a class named Convert for such a task. This would also be more natural because the NET provided converting methods live in a Convert class too.  
to be consistent with the NET naming I also would prefer the method be named ToDoubleLinkedListNode()  
instead of shortening the name of the node to be returned to res, name it convertedNode  
you should name the node which is returned by the recursive calls leftNode or rightNode.  


General  


by extracting the search for the last Next node which is not null to a separate method, the if..else if..else can be removed.
if you use a guard claus for root.Right == null you save horizontal spacing.
the method should be static, because it doesn't depend on any internal state of the class itself. This makes the constructor obsolete.  


Refactoring  

After all for above is applied the refactored code looks like  

public class Convert
{
    public DoubleLinkedListNode ToDoubleLinkedListNode(TreeNode root)
    {
        if (root == null) { return null; }

        DoubleLinkedListNode convertedNode = new DoubleLinkedListNode { Index = root.Index };

        if (root.Left != null)
        {
            var leftNode = ToDoubleLinkedListNode(root.Left);
            leftNode.Previous = convertedNode;
            convertedNode.Next = leftNode;
        }

        if (root.Right == null) { return convertedNode; }

        var rightNode = ToDoubleLinkedListNode(root.Right);

        DoubleLinkedListNode lastNextNode = FindLastNextNode(convertedNode);
        rightNode.Previous = lastNextNode;
        lastNextNode.Next = rightNode;

        return convertedNode;
    }
    private static DoubleLinkedListNode FindLastNextNode(DoubleLinkedListNode node)
    {
        while (node.Next != null)
        {
            node = node.Next;
        }
        return node;
    }
}