我有一个具有如下约束的方法:
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/