Если класс не принадлежит вам, то это звучит так, будто API был специально написан для предотвращения этого, а это значит, что ваш подход не соответствует требованиям авторов API. Взгляните на документы и посмотрите, есть ли рекомендуемый подход к использованию этого класса.
Если у вас есть do, у вас есть контроль над классом и вы хотите реализовать этот шаблон, то он обычно реализуется с помощью статического метода в классе. Это ключевая концепция, которая составляет шаблон Singleton.
Например:
public PrivateCtorClass
{
private PrivateCtorClass()
{
}
public static PrivateCtorClass Create()
{
return new PrivateCtorClass();
}
}
public SomeOtherClass
{
public void SomeMethod()
{
var privateCtorClass = PrivateCtorClass.Create();
}
}
SqlCommandParameter материал является хорошим примером. Они ожидают, что создавать параметры, вызвав такие вещи, как это:
var command = IDbConnnection.CreateCommand(...);
command.Parameters.Add(command.CreateParameter(...));
Мой пример не большой код, потому что он не демонстрирует настройки свойств параметров команды или повторное использование параметров/команд, но вы получите идею.
Небольшое улучшение этого удобного статического метода заключается в создании массива типов параметров динамически – nrjohnstone
@nrjohnstone Если вы имеете в виду GetType для каждого элемента массива, это невозможно в общем случае из-за нулей. Кроме того, если вы попытаетесь вывести типы в этом случае, вы в конечном итоге выполните полное разрешение перегрузки в соответствии с выбранным языком, что не является тривиальным в случае C#. –