Consider using the Factory Pattern to achieve that, an example would be something like this:

public class AnimalFactory
{
public IAnimal CreateAnimal(string animalType)
{
//Here you can either have a switch statement checking for
//type, or use Type.GetType(animalType) and then create an
//instance using the Activator - but in the latter case you will
//need to pass in the exact type name of course
//PS. You can also use an IoC container to resolve all
//implementations of IAnimal and have a distinguishing property
//that you use here to select the type you want, but I think
//that's a bit off topic so won't detail it here
}
}
static void Main(string[] args)
{
var animalType = "Dog";
var amimal = new AnimalFactory().CreateAnimal(animalType);
animal.Bark();
}

EDIT

One way to use an IoC container (AutoFac in this example) is to scan you assemblies and register all implementations of IAnimal keyed by the class name (if you were registering singleton instances, you could key by a property of the interface), something like the following:

Of course you can still refactor that into a factory
PS. There might be a better way of registering all types within the assembly using AutoFac's Assembly Scanning, but I couldn't see any way to combine that with a key per type.