C# 用于中等信任主机的AutoMapper替代方案
我正在使用AutoMapper在我的域模型和视图模型之间进行映射。我的web主机只支持中等信任,因此AutoMapper无法工作。对于像AutoMapper这样可以在中等信任度下运行的优秀映射程序,还有其他建议吗C# 用于中等信任主机的AutoMapper替代方案,c#,asp.net,asp.net-mvc,asp.net-mvc-3,automapper,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Automapper,我正在使用AutoMapper在我的域模型和视图模型之间进行映射。我的web主机只支持中等信任,因此AutoMapper无法工作。对于像AutoMapper这样可以在中等信任度下运行的优秀映射程序,还有其他建议吗 我无法在主机上访问IIS。如果您的模型使用相同名称的属性,您可以开发这样一个简单的映射器: public static class Mapper { /// <summary> /// Copy all not null propertie
我无法在主机上访问IIS。如果您的模型使用相同名称的属性,您可以开发这样一个简单的映射器:
public static class Mapper {
/// <summary>
/// Copy all not null properties values of object source in object target if the properties are present.
/// Use this method to copy only simple type properties, not collections.
/// </summary>
/// <param name="source">source object</param>
/// <param name="target">target object</param>
private static void SimpleCopy(object source, object target)
{
foreach (PropertyInfo pi in source.GetType().GetProperties())
{
object propValue = pi.GetGetMethod().Invoke(source, null);
if (propValue != null)
{
try
{
PropertyInfo pit = GetTargetProperty(pi.Name, target);
if (pit != null) pit.GetSetMethod().Invoke(target, new object[] { propValue });
}
catch (Exception) { /* do nothing */ }
}
}
}
private static PropertyInfo GetTargetProperty(string name, object target)
{
foreach (PropertyInfo pi in target.GetType().GetProperties())
{
if (pi.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase)) return pi;
}
return null;
}
}
公共静态类映射器{
///
///复制对象目标中对象源的所有非空属性值(如果属性存在)。
///使用此方法仅复制简单类型属性,而不复制集合。
///
///源对象
///目标对象
私有静态void SimpleCopy(对象源、对象目标)
{
foreach(source.GetType().GetProperties()中的PropertyInfo pi)
{
object propValue=pi.getMethod().Invoke(源,null);
if(propValue!=null)
{
尝试
{
PropertyInfo-pit=GetTargetProperty(pi.Name,target);
if(pit!=null)pit.GetSetMethod().Invoke(目标,新对象[]{propValue});
}
捕获(异常){/*不执行任何操作*/}
}
}
}
私有静态属性Info GetTargetProperty(字符串名称、对象目标)
{
foreach(target.GetType().GetProperties()中的PropertyInfo pi)
{
if(pi.Name.Equals(Name,StringComparison.CurrentCultureIgnoreCase))返回pi;
}
返回null;
}
}