У вас не будет проблем с многопоточностью, поскольку вы каждый раз создаете новый экземпляр.
О спектакле. Вы можете измерить время, создав 100 экземпляров:
long ini = Environment.TickCount;
for (int i = 0; i < 100; i++)
{
Session["ClientCode"] = "Client2";
clientInvoice = FactoryInstantiator<InvoiceFactory>.Instance.CreateInstance();
clientInvoice.Set();
}
long timeCreate100Instances = Environment.TickCount - ini;
При использовании reflection
снижение производительности происходит при загрузке сборки. Я думаю, что в вашем случае загружаемый вами класс находится в той же dll, вы также не будете экспериментировать с какой-либо проблемой производительности.
В другом случае вы можете кэшировать объекты Assembly
в Hastable/Dictionary
в вашем методе CreateInstance()
.