Declarar un sinónimo de tipo en C #

Espero haberte perdido esto en los documentos. ¿Hay una manera de declarar un sinónimo de tipo en C #?

Puede utilizar la instrucción using para crear un alias para un tipo.

Por ejemplo, lo siguiente creará un alias para System.Int32 llamado MyInt

 using MyInt = System.Int32; 

Alternativamente, puede usar la herencia para ayudar en algunos casos. Por ejemplo

Crear un tipo de People que es una List

 public class People: List { } 

No es un alias, pero simplifica las cosas, especialmente para tipos más complejos como este

 public class SomeStructure : List>> { } 

Y ahora puede usar el tipo SomeStructure lugar de esa divertida statement genérica.

Para el ejemplo que tiene en sus comentarios, para un Tuple podría hacer algo como lo siguiente.

 public class MyTuple : Tuple { public MyTuple(int i, string s) : base(i, s) { } } 

Quizás estés buscando utilizar directivas de alias :

 using MyType = MyNamespace.SomeType; 

Esto te permite, en tu código, escribir:

 // Constructs a MyNamespace.SomeType instance... MyType instance = new MyType(); 

¿hay una manera de declarar un sinónimo de tipo en c #?

No.

Puede crear un alias usando, pero está limitado al archivo 1 (espacio de nombres).

Parece que estás hablando de un alias que puedes declarar en tus declaraciones de using en la parte superior de tus archivos de código:

 using MyDate = System.DateTime; 

Esta no es la forma más sencilla de resolver este problema, pero cuando necesito un sinónimo de tipo, creo una clase con conversiones implícitas hacia y desde el tipo de destino, por ejemplo:

Nombre dado debe ser sinónimo de cadena, entonces puede hacer lo siguiente:

 public class Name { public string Value; public static implicit operator string(Name name) { return name.Value; } public static implicit operator Name(string name) { return new Name {Value = name}; } } 

Lo que le dará la posibilidad de usar el tipo de Nombre en su código y el comstackdor le permitirá asignarle valores también desde una cadena.

Si tiene la siguiente firma de método:

 public void SomeMethodThatNeedsName(Name name) 

Podrías hacer esto:

 SomeMethodThatNeedsName("aNameThatComesFromString")