Tengo un objeto:¿Cómo se convierte el objeto al tipo descrito por Tipo de clase?
ExampleClass ex = new ExampleClass();
Y:
Type TargetType
me gustaría correr ex con el tipo descrito por TargetType así:
Object o = (TargetType) ex;
Pero cuando hago esto consiga:
El tipo o nombre del espacio de nombres 't' podría no encontrarse
Entonces, ¿cómo hacer esto? ¿Me estoy perdiendo algo obvio aquí?
Actualización:
me gustaría obtener algo como esto:
public CustomClass MyClassOuter
{
get
{
return (CustomClass) otherClass;
}
}
private otherClass;
Y porque voy a tener muchas propiedades como esta me gustaría hacer esto:
public CustomClass MyClassOuter
{
get
{
return (GetThisPropertyType()) otherClass;
}
}
private SomeOtherTypeClass otherClass;
Contexto:
Normalmente, en mi contexto en mi clase, necesito crear muchas propiedades s. Y en cada uno, reemplace el casting por el tipo de propiedad. No parece tener sentido para mí (en mi contexto) porque sé qué tipo de devolución es y me gustaría escribir algún tipo de código que me haga el casting. Tal vez sea el caso de los genéricos, aún no lo sé.
Es como puedo asegurar en esta propiedad que obtengo el objeto correcto y en el tipo correcto y soy 100% capaz de convertirlo al tipo de propiedad.
Todo lo que necesito hacer para no tener que especificar en cada propiedad que tiene que "agregar valor a CustomClass", me gustaría hacer algo así como "valor de conversión a la misma clase que esta propiedad es".
Por ejemplo:
class MYBaseClass
{
protected List<Object> MyInternalObjects;
}
class MyClass
{
public SpecialClass MyVeryOwnSpecialObject
{
get
{
return (SpecialClass) MyInteralObjects["MyVeryOwnSpecialObject"];
}
}
}
Y bien - Puedo hacer muchas propiedades como ésta anteriormente - pero hay 2 problemas:
1) que necesito para especificar el nombre del objeto en MyInternalObjects pero es lo mismo que el nombre de la propiedad. Esto lo resolví con System.Reflection.MethodBase.GetCurrentMethod(). Name.
2) En cada propiedad, necesito convertir objetos de MyInternalObjects a diferentes tipos. En MyVeryOwnSpecialObject, por ejemplo, a SpecialClass. Siempre es la misma clase que la propiedad.
Por eso me gustaría hacer algo como esto:
class MYBaseClass
{
protected List<Object> MyInternalObjects;
}
class MyClass
{
public SpecialClass MyVeryOwnSpecialObject
{
get
{
return (GetPropertyType()) MyInteralObjects[System.Reflection.MethodBase.GetCurrentMethod().Name];
}
}
}
Y ahora preocupaciones: Ok, ¿para qué? Porque más adelante en mi aplicación tendré todos los beneficios de los tipos seguros y demás (intellisense).
Segundo: ¿pero ahora perderá la seguridad del tipo en este lugar? No.Porque estoy muy seguro de que tengo un objeto de mi tipo en una lista.
He actualizado mi respuesta para responder a su edición. Sospecho que tendremos que ver un ejemplo * completo * para que esta pregunta tenga sentido. –
"Siempre es la misma clase que la propiedad", así que échalo a ese tipo. Usted conoce ese tipo en tiempo de compilación; ¿Por qué hacer algo más? ¿Solo para ahorrar algo de tipeo? –
Si sale de la caja verá los beneficios de este –