Мне нужно динамически использовать свойство для его фактического типа. Как я/могу ли я сделать это с помощью отражения?
Чтобы объяснить реальный сценарий, над которым я немного работаю. Я пытаюсь вызвать метод расширения "Первый" в свойстве 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
}
}
}