J'ai un objet:Comment convertir un objet en type décrit par Type classe?
ExampleClass ex = new ExampleClass();
Et:
Type TargetType
je voudrais jeter ex au type décrit par TargetType comme ceci:
Object o = (TargetType) ex;
Mais quand je fais cela, je obtenir:
Le type ou nom d'espace de nommage 't' pourrait pas trouvé
Alors, comment faire? Ai-je manqué quelque chose d'obèle ici?
Mise à jour:
Je voudrais obtenir quelque chose comme ceci:
public CustomClass MyClassOuter
{
get
{
return (CustomClass) otherClass;
}
}
private otherClass;
Et parce que je vais avoir de nombreuses propriétés comme cela, je voudrais faire:
public CustomClass MyClassOuter
{
get
{
return (GetThisPropertyType()) otherClass;
}
}
private SomeOtherTypeClass otherClass;
Contexte:
Normalement dans mon contexte dans ma classe je dois créer beaucoup de propriété s. Et dans chacun remplacer le moulage au type de propriété. Cela ne semble pas avoir de sens pour moi (dans mon contexte) parce que je sais quel type de retour est et je voudrais écrire un code qui fera le casting pour moi. C'est peut-être un cas de génériques, je ne le sais pas encore.
C'est comme je peux assurer dans cette propriété que j'obtiens le bon objet et dans le bon type et suis 100% capable de le mouler au type de propriété. Tout ce que j'ai besoin de faire ceci pour que je n'aie pas besoin de spécifier dans chaque propriété qu'il doit "jeter une valeur à CustomClass", je voudrais faire quelque chose comme "jeter la valeur à la même classe que cette propriété est".
Par exemple:
class MYBaseClass
{
protected List<Object> MyInternalObjects;
}
class MyClass
{
public SpecialClass MyVeryOwnSpecialObject
{
get
{
return (SpecialClass) MyInteralObjects["MyVeryOwnSpecialObject"];
}
}
}
Et ok - Je peux faire beaucoup de propriétés comme celui-ci ci-dessus - mais il y a 2 problèmes:
1) Je dois spécifier le nom de l'objet sur MyInternalObjects mais il est le même comme nom de propriété. Cela j'ai résolu avec System.Reflection.MethodBase.GetCurrentMethod(). Name.
2) Dans chaque propriété, je dois convertir un objet de MyInternalObjects en différents types. Dans MyVeryOwnSpecialObject par exemple - à SpecialClass. C'est toujours la même classe que la propriété.
Voilà pourquoi je voudrais faire quelque chose comme ceci:
class MYBaseClass
{
protected List<Object> MyInternalObjects;
}
class MyClass
{
public SpecialClass MyVeryOwnSpecialObject
{
get
{
return (GetPropertyType()) MyInteralObjects[System.Reflection.MethodBase.GetCurrentMethod().Name];
}
}
}
Et maintenant: préoccupations Ok, pour quoi? Parce que plus loin dans mon application, je vais avoir tous les avantages des types de sécurité et ainsi de suite (IntelliSense).
Deuxième: mais maintenant vous allez perdre la sécurité de type dans cet endroit? Non.Parce que je suis très sûr que j'ai un objet de mon type sur une liste.
J'ai mis à jour ma réponse pour répondre à votre modification. Je suppose que nous aurons besoin de voir un exemple * complet * pour que cette question ait du sens. –
"C'est toujours la même classe que la propriété" - alors jetez-le à ce type! Vous connaissez ce type à la compilation; Pourquoi faire autre chose? Juste pour sauver un peu de frappe? –
Si vous sortez de la boîte, vous verrez des avantages de ce –