c# - 将类型转换为引用类型

标签 c# entity-framework reflection orm activator

我有一个具有如下约束的方法:

public class MappingTransformation
{
    public static ClassMapped<T> Convert<T>(Mapping<T> source) where T : class
    {
        return ClassMapped<T>.GetInstance(source);
    }
}

此 T 必须是引用类型,因为它将传递给 EntityTypeConfiguration。

但是,当使用MappingTransformation.Convert<>(映射源)时,我只有一个类型,并且不知道如何将此类型转换为所需的“引用类型”。

这是我尝试使用它的方式:

#region Test
        foreach (var item in mappingAssembly.GetTypes())
        {
            var mappingObj = Activator.CreateInstance(item);

            var modelName = mappingObj.GetType().GetProperty("ModelName").GetValue(mappingObj);

            var modelTypeEquivalent = modelAssembly.GetTypes().First(x => x.Name.Equals(modelName));

            var convertido = MappingTransformation.Convert<Model.Clientes>((Mapping<Model.Clientes>)mappingObj);


            var breakpoint = true;
        }
#endregion

如何实现这一目标?

最佳答案

以前从未回答过我自己的问题,但我想我明白了。仍在测试,但我想我已经成功了。

阅读了有关 Stack Overflow 的其他一些问题后,我得出了以下结论:

#region Test
        foreach (var item in mappingAssembly.GetTypes())
        {
            var mappingObj = Activator.CreateInstance(item);

            var modelName = mappingObj.GetType().GetProperty("ModelName").GetValue(mappingObj);

            var modelTypeEquivalent = modelAssembly.GetTypes().First(x => x.Name.Equals(modelName));

            var convertionMethod = typeof(MappingTransformation).GetMethod("Convert");
            var genericConvertionMethod = convertionMethod.MakeGenericMethod(modelTypeEquivalent);
            var result = genericConvertionMethod.Invoke(null, new object[] { mappingObj });

            var breakpoint = true;
        }
#endregion

This was the question这让我从 Jon Skeet 先生那里得到了答案。

关于c# - 将类型转换为引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20550699/

相关文章:

c# - Azure 计划程序 Rest API - 更新作业错误 : Schedules are not supported for recurrence unit 'Hour'

c# - 互操作 Excel 很慢

c# - 关于使用 ADO.Net 数据服务,我应该了解什么? (常问问题)

c# - LINQ to Entities 无法识别 Replace 方法?

javascript - 当我创建新员工时,下拉列表不会加载数据,但是当刷新页面时,它会加载新数据

java - getGenericParameterTypes 和 getParameterTypes 之间的区别

.net - StackFrame.GetNativeOffset()有什么用?

c# - 覆盖方法时,我的自定义代码应该出现在 super(base) 之前还是之后

c# - 引用列表功能困惑

c# - WP7.1 上的匿名类型和获取访问器?