У меня есть объект:
ExampleClass ex = new ExampleClass();
и
Type TargetType
Я хотел бы использовать ex для типа, описанного TargetType, следующим образом:
Object o = (TargetType) ex;
Но когда я это делаю, я получаю:
Тип или имя пространства имен 't' может не найдено
Итак, как это сделать? Я что-то здесь не хватает?
Update:
Я хотел бы получить что-то вроде этого:
public CustomClass MyClassOuter
{
get
{
return (CustomClass) otherClass;
}
}
private otherClass;
И потому, что у меня будет много таких свойств, я хотел бы сделать это:
public CustomClass MyClassOuter
{
get
{
return (GetThisPropertyType()) otherClass;
}
}
private SomeOtherTypeClass otherClass;
Context:
Обычно в моем контексте в моем классе мне нужно создать много свойств. И каждый заменяет литье на тип свойства. Мне кажется, у меня нет смысла (в моем контексте), потому что я знаю, что такое тип возврата, и я хотел бы написать какой-то код, который будет делать кастинг для меня. Может быть, это случай дженериков, я пока не знаю.
Мне кажется, что я могу гарантировать в этом свойстве, что я получаю нужный объект и в правильном типе и на 100% способен передать его в тип свойства.
Все, что мне нужно сделать, так что мне не нужно указывать в каждом свойстве, что он должен "отличать значение до CustomClass", я хотел бы сделать что-то вроде "значение заливки в том же классе, что и это свойство".
Например:
class MYBaseClass
{
protected List<Object> MyInternalObjects;
}
class MyClass
{
public SpecialClass MyVeryOwnSpecialObject
{
get
{
return (SpecialClass) MyInteralObjects["MyVeryOwnSpecialObject"];
}
}
}
И хорошо - я могу сделать много свойств, подобных этому выше, но есть две проблемы:
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).
Второй: но теперь вы потеряете безопасность в этом месте? Нет. Потому что я очень уверен, что у меня есть объект моего типа в списке.