设为首页 加入收藏

TOP

ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)(四)
2019-09-17 15:43:16 】 浏览:64
Tags:ASP.NET Core Web 应用程序 系列 使用 内置 IoC 容器 进行 批量 依赖 注入 MVC 当中 应用
ions.Generic;
using System.ComponentModel; using System.Dynamic; using System.Linq; using System.Xml; namespace TianYa.DotNetShare.SharpCore.Extensions { /// <summary> /// Dynamic的扩展方法 /// </summary> public static class DynamicExtensions { #region 匿名对象处理 #region 将对象[主要是匿名对象]转换为dynamic /// <summary> /// 将对象[主要是匿名对象]转换为dynamic /// </summary> public static dynamic ToDynamic(this object value) { IDictionary<string, object> expando = new ExpandoObject(); var type = value.GetType(); var properties = TypeDescriptor.GetProperties(type); foreach (PropertyDescriptor property in properties) { var val = property.GetValue(value); if (property.PropertyType.FullName.StartsWith("<>f__AnonymousType")) { dynamic dval = val.ToDynamic(); expando.Add(property.Name, dval); } else { expando.Add(property.Name, val); } } return expando as ExpandoObject; } #endregion #region 将对象[主要是匿名对象]转换为List<dynamic> /// <summary> /// 将对象[主要是匿名对象]转换为List<dynamic> /// </summary> public static List<dynamic> ToDynamicList(this IEnumerable<dynamic> values) { var list = new List<dynamic>(); if (values != null) { if (values.Any()) { list.AddRange(values.Select(v => ((object)v).ToDynamic())); } } return list; } #endregion #region 将匿名对象集合转换为XML /// <summary> /// 将匿名对象集合转换为XML /// </summary> public static XmlDocument ListObjertToXML(this IEnumerable<dynamic> values) { var xmlDoc = new XmlDocument(); var xmlElem = xmlDoc.CreateElement("DocumentElement"); xmlDoc.AppendChild(xmlElem); if (values != null) { if (values.Any()) { var node = xmlDoc.SelectSingleNode("DocumentElement"); foreach (var item in values) { var xmlRow = xmlDoc.CreateElement("Row"); ObjectToXML(item, xmlDoc, xmlRow); node.AppendChild(xmlRow); } } } return xmlDoc; } #endregion #region 将匿名对象填充XML节点 /// <summary> /// 将匿名对象填充XML节点 /// </summary> private static void ObjectToXML(object value, XmlDocument xmlDoc, XmlElement xmlRow) { IDictionary<string, object> expando = new ExpandoObject(); var type = value.GetType(); var properties = TypeDescriptor.GetProperties(type); foreach (PropertyDescriptor property in properties) { var val = property.GetValue(value); xmlRow.CloneNode(false); var xmlTemp = xmlDoc.CreateElement(property.Name); XmlText xmlText; if (property.PropertyType.FullName.StartsWith("<>f__AnonymousType")) { dynamic dval = val.ToDynamic(); xmlText = xmlDoc.CreateTextNode(dval.ObjectToString()); } else { xmlText = xmlDoc.CreateTextNode(val.ToString()); } xmlTemp.AppendChild(xmlText); xmlRow.AppendChild(xmlTemp); } } #endregion #endregion } }

该扩展类主要在我们的Action向视图传递匿名类型值的时候使用

六、Web层

本demo的web项目需要引用以下几个程序集:

1、TianYa.DotNetShare.Model 我们的实体层

2、TianYa.DotNetShare.Service 我们的服务层

3、TianYa.DotNetShare.Repository 我们的仓储层,正常我们的web项目是不应该使用仓储层的,此处我们引用是为了演示IoC依赖注入

4、TianYa.DotNetShare.CommTool 我们的公共工具类库

5、TianYa.DotNetShare.SharpCore 我们的Sharp核心类库

到了这里我们所有的工作都已经准备好了,接下来就是开始做注入工作了。

打开我们的S

首页 上一页 1 2 3 4 5 6 下一页 尾页 4/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇一般处理程序Session 下一篇(二十三)c#Winform自定义控件-..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目