Si la clase no es una de las suyas, entonces parece que la API se escribió deliberadamente para evitar esto, lo que significa que es posible que su enfoque no sea el deseado por los escritores de la API. Eche un vistazo a los documentos y vea si hay un enfoque recomendado para usar esta clase.
Si do tienen control sobre la clase y desean implementar este patrón, entonces, por lo general, se implementa mediante un método estático en una clase. Este es un concepto clave que también conforma el patrón de Singleton.
Por ejemplo:
public PrivateCtorClass
{
private PrivateCtorClass()
{
}
public static PrivateCtorClass Create()
{
return new PrivateCtorClass();
}
}
public SomeOtherClass
{
public void SomeMethod()
{
var privateCtorClass = PrivateCtorClass.Create();
}
}
El material SqlCommandParameter es un buen ejemplo. Ellos esperan que le permite crear parámetros llamando a cosas como esta:
var command = IDbConnnection.CreateCommand(...);
command.Parameters.Add(command.CreateParameter(...));
Mi ejemplo no es muy grande, ya que el código no muestra la configuración de propiedades de parámetros de comandos o la reutilización de los parámetros/comandos, pero se entiende la idea.
Una ligera mejora en este práctico método estático consiste en crear la matriz de tipos de parámetros dinámicamente – nrjohnstone
@nrjohnstone Si se refiere a GetType en cada elemento de la matriz, en general no es posible debido a nulos. Además, si intenta inferir los tipos en este caso, terminará implementando una resolución de sobrecarga completa de acuerdo con el idioma de su elección, lo que no es trivial en el caso de C#. –