Eliminate duplication in similar fake data access classes
Why not use generics:

public class FakeDb&lt;TList&gt; : Dictionary&lt;string, List&lt;TList&gt;&gt;
{
    public const string Table1 = "Table1";

    public void AddToTable(string tableName, TList line)
    {
        if (!ContainsKey(tableName))
        {
            Add(tableName, new List&lt;TList&gt;());
        }

        List&lt;TList&gt; rows = GetTableData(tableName);
        rows.Add(line);
    }

    private List&lt;TList&gt; GetTableData(string tableName)
    {
        return this[tableName];
    }
}


Then to use:

var simpleDB = new FakeDb&lt;string&gt;();
var complexDb = new FakeDb&lt;Dictionary&lt;string, List&lt;string&gt;&gt;&gt;();