动态委托转换为动态功能

时间:2014-08-05 15:39:45

标签: c# delegates rhino-mocks

我想将一个对象复制到同一个接口的模拟中。目标是,做到动态。但似乎没有办法将动态委托转换为函数。

public static T GetCopiedMock<T>(T toCopy, T mockObject) where T : class
{
    IEnumerable<PropertyInfo> properties = GetPropertyInfos(toCopy, typeof(T));

    foreach (var property in properties)
    {
        var parameter = Expression.Parameter(typeof(T));
        var result = Expression.Property(parameter, property);
        var lamda = Expression.Lambda(result, parameter);
        var compilat = lamda.Compile();
        var funcType = typeof(Func<,>).MakeGenericType(typeof(T), property.PropertyType);

        //Here is my problem
        mockObject.Expect(new Func<T, property.PropertyType>(compilat));
    }

    return mockObject;
}

我知道它不可能直接,因为propertytype是在运行时但是有任何解决方法吗?

顺便说一句,这是我的第一篇文章。所以,如果你看到一些我必须做得更好的事情,请告诉我!

0 个答案:

没有答案