Estoy escribiendo una herramienta donde tengo que reflexionar sobre los métodos y si los parámetros de los métodos son de tipo complejo, entonces necesito cierto tipo de acciones como instanciarlas, etc.determinar el tipo complejo de un tipo primitivo utilizando la reflexión
Ahora vi la propiedad IsPrimitive
en la variable Type
. Sin embargo, muestra string
y decimal
como tipos complejos, que técnicamente no es incorrecto. Sin embargo, lo que realmente quiero es poder distinguir los tipos de clase creados por el desarrollador de los tipos de datos definidos por el sistema.
¿Hay alguna manera de que pueda hacer esto?
En C#, las cadenas son tipos claramente complejos. Se definen como una clase en lugar de stuct que solo marca la diferencia, pero el comportamiento de la cadena tampoco es conceptualmente primitivo. Su uso en C# se parece al de un tipo primitivo, pero eso se hace principalmente a través de una sobrecarga inteligente del operador y algunas características especiales del lenguaje (como el manejo de C# de los literales de cadena). –
@Stephen - No estoy de acuerdo; struct vs class es * no * lo importante aquí. Puedo escribir una estructura personalizada tanto como un tipo, etc. Y lo "especial" en la cadena va mucho más allá del lenguaje, como los operadores. –
Creo que podría ser semántica en función de su definición de "complejo", y C# no utiliza oficialmente el término "tipo complejo". Tiene términos como "personalizado" y "tipo de valor", y las picaduras no lo son. Los considero conceptualmente complejos porque los datos de cadenas se almacenan como una matriz de elementos que no son cadenas ... por lo tanto, el uso de datos en una cadena depende del comportamiento que es más complejo que una simple obtención de los tipos de valores subyacentes de memoria. Pero su definición de complejo puede ser diferente. –