Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于中等信任主机的AutoMapper替代方案_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Automapper - Fatal编程技术网

C# 用于中等信任主机的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

我正在使用AutoMapper在我的域模型和视图模型之间进行映射。我的web主机只支持中等信任,因此AutoMapper无法工作。对于像AutoMapper这样可以在中等信任度下运行的优秀映射程序,还有其他建议吗


我无法在主机上访问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;
}
}