У меня есть объект:
ExampleClass ex = new ExampleClass();
И
Type TargetType
Я хотел бы привести ex к типу, описанному TargetType, следующим образом:
Object o = (TargetType) ex;
Но когда я делаю это, я получаю:
Имя типа или пространства имен 't' может
не найден
Так как это сделать? Я что-то упустил здесь?
Обновление:
Я бы хотел получить что-то вроде этого:
public CustomClass MyClassOuter
{
get
{
return (CustomClass) otherClass;
}
}
private otherClass;
И так как у меня будет много таких свойств, я хотел бы сделать это:
public CustomClass MyClassOuter
{
get
{
return (GetThisPropertyType()) otherClass;
}
}
private SomeOtherTypeClass otherClass;
Контекст:
Обычно в моем контексте в моем классе мне нужно создать много свойств. И в каждом сменить кастинг на тип недвижимости. Это не имеет смысла для меня (в моем контексте), потому что я знаю, что такое возвращаемый тип, и я хотел бы написать какой-то код, который будет выполнять приведение для меня. Может быть, это случай дженериков, я пока не знаю.
Как будто я могу заверить в этом свойстве, что я получаю правильный объект в нужном типе и на 100% могу привести его к типу свойства.
Все, что мне нужно сделать, чтобы мне не нужно было указывать в каждом свойстве, что оно должно «приводить значение к CustomClass», я хотел бы сделать что-то вроде «приведения значения к тому же классу, что и это свойство. ».
Например:
class MYBaseClass
{
protected List<Object> MyInternalObjects;
}
class MyClass
{
public SpecialClass MyVeryOwnSpecialObject
{
get
{
return (SpecialClass) MyInteralObjects["MyVeryOwnSpecialObject"];
}
}
}
И хорошо - я могу сделать много свойств, как показано выше, - но есть 2 проблемы:
1) Мне нужно указать имя объекта в MyInternalObjects, но оно совпадает с именем свойства. Это я решил с помощью System.Reflection.MethodBase.GetCurrentMethod (). Name.
2) В каждом свойстве мне нужно привести объект из MyInternalObjects к разным типам. В MyVeryOwnSpecialObject например - в SpecialClass. Это всегда тот же класс, что и у свойства.
Вот почему я хотел бы сделать что-то вроде этого:
class MYBaseClass
{
protected List<Object> MyInternalObjects;
}
class MyClass
{
public SpecialClass MyVeryOwnSpecialObject
{
get
{
return (GetPropertyType()) MyInteralObjects[System.Reflection.MethodBase.GetCurrentMethod().Name];
}
}
}
А теперь касается: хорошо, зачем? Потому что в дальнейшем в моем приложении будут все преимущества безопасных типов и т. Д. (Intellisense).
Второй: а теперь вы потеряете безопасность типов в этом месте? Нет. Потому что я очень уверен, что у меня есть объект моего типа в списке.