Ни один экземпляр пространства имен никогда не "создается" во время выполнения.Думайте об этом как о способе организации кода, как о каталоге на жестком диске.
Я думаю о разделяемом методе как о куске кода, который можно запустить без создания объекта.Таким образом, каждый пользователь будет иметь свой собственный логический независимый процесс, выполняющийся через код.
Если вам нужен отдельный объект, который является общим для каждого пользователя, это можно сделать следующим образом:
public class cApp
{
static readonly cDB _cDB =
new cDB(ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString);
public static cDB DB
{
get
{
return _cDB;
}
}
}
Это создает экземпляр единственного объекта типа cDB при первом прикосновении к нему при сохранении потока.Он будет называться _cDB, который можно использовать в коде через свойство DB.Например:
cApp.DB.MyMethod();
В этом случае будет создан только один экземпляр, но каждый пользователь снова выполнит код независимо.Таким образом, значение приватных переменных видится каждым процессом (как строка подключения в примере), но локальный метод, устанавливающий локальную переменную, не повлияет на любой другой процесс, выполняющийся через этот же код.