Мне нужно динамически привести свойство к его фактическому типу. Как я / могу ли я сделать это с помощью отражения?
Чтобы объяснить реальный сценарий, над которым я немного работаю. Я пытаюсь вызвать «Первый» метод расширения для свойства Entity Framework. Конкретное свойство, вызываемое для объекта контекста Framework, передается методу в виде строки (а также идентификатора извлекаемой записи). Поэтому мне нужен фактический тип объекта для вызова метода First.
Я не могу использовать метод «Где» на объекте, поскольку лямбда-методу или методу делегата все еще требуется фактический тип объекта для доступа к свойствам.
Также, поскольку объект генерируется Entity Framework, я не могу привести тип к интерфейсу и работать с ним.
Это код сценария:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Reflection;
namespace NmSpc
{
public class ClassA
{
public int IntProperty { get; set; }
}
public class ClassB
{
public ClassA MyProperty { get; set; }
}
public class ClassC
{
static void Main(string[] args)
{
ClassB tester = new ClassB();
PropertyInfo propInfo = typeof(ClassB).GetProperty("MyProperty");
//get a type unsafe reference to ClassB`s property
Object property = propInfo.GetValue(tester, null);
//get the type safe reference to the property
ClassA typeSafeProperty = property as ClassA;
//I need to cast the property to its actual type dynamically. How do I/Can I do this using reflection?
//I will not know that "property" is of ClassA apart from at runtime
}
}
}