当前位置: 首页 > news >正文

网站建设平台哪个公司好服装怎么做网站推广

网站建设平台哪个公司好,服装怎么做网站推广,天台城乡规划建设局网站,天津网站建设索王道下拉我们在第三篇中学习里一个简易的IoC框架。今天我们接着上次的程序#xff0c;实现带参数构造函数对象的实例和属性的注入 。  我们知道可以通过反射获取类的构造函数及参数(GetConstructors方法)#xff1b;可以获取属性和属性的类型(GetProperties方法)。通过Activator的C…  我们在第三篇中学习里一个简易的IoC框架。今天我们接着上次的程序实现带参数构造函数对象的实例和属性的注入 。  我们知道可以通过反射获取类的构造函数及参数(GetConstructors方法)可以获取属性和属性的类型(GetProperties方法)。通过Activator的CreateInstance(Type type, params object[] args)方法可以创建带参数构造函数的实例。通过SetValue方法可以给属性赋值这样一来我们就上次的代码稍加改造就可以实现属性的注入了。   下面是完成的代码 Domain    public class Person    {        public string Name { get; set; }        public int Age { get; set; }    }   public class PersonDao    {        private int intProp;        public PersonDao(int intProp)        {            this.intProp  intProp;        }        public Person Entity { get; set; }        public override string ToString()        {            return 构造函数参数intProp为  this.intProp;        }    }  ObjectFactorypublic class ObjectFactory    {        private IDictionarystring, object objectDefine  new Dictionarystring, object();        private ObjectFactory(string fileName)        {            InstanceObjects(fileName);  // 实例IoC容器            DiObjects(fileName);  // 属性注入        }        private static ObjectFactory instance;        private static object lockHelper  new object();        public static ObjectFactory Instance(string fileName)        {            if (instance  null)            {                lock (lockHelper)                {                    instance  instance ?? new ObjectFactory(fileName);                }            }            return instance;        }        /**//// summary        /// 实例IoC容器        /// /summary        /// param namefileName/param        private void InstanceObjects(string fileName)        {            XElement root  XElement.Load(fileName);            var objects  from obj in root.Elements(object)                          select obj;            //无参构造函数            objectDefine  objects.Where(obj                 obj.Element(constructor-arg)  null).ToDictionary(                    k  k.Attribute(id).Value,                     v                      {                        string typeName  v.Attribute(type).Value;                          Type type  Type.GetType(typeName);                          return Activator.CreateInstance(type);                    }                );            //有参构造函数            foreach (XElement item in objects.Where(obj                  obj.Element(constructor-arg) ! null))            {                                                                                                                                                                  string id  item.Attribute(id).Value;                string typeName  item.Attribute(type).Value;                Type type  Type.GetType(typeName);                var args  from property in type.GetConstructors()[0].GetParameters()                           join el in item.Elements(constructor-arg)                           on property.Name equals el.Attribute(name).Value                           select Convert.ChangeType(el.Attribute(value).Value,                           property.ParameterType);                object obj  Activator.CreateInstance(type, args.ToArray());                objectDefine.Add(id, obj);            }        }        /**//// summary        /// 属性注入        /// /summary        /// param namefileName/param        private void DiObjects(string fileName)        {            XElement root  XElement.Load(fileName);            var objects  from obj in root.Elements(object)                          select obj;            foreach (KeyValuePairstring,object item in objectDefine)            {                foreach (var el in objects.Where(e                      e.Attribute(id).Value  item.Key).Elements(property))                {                    Type type  item.Value.GetType();                    //获取属性                    foreach (PropertyInfo property in type.GetProperties())                    {                        if (property.Name  el.Attribute(name).Value)                        {                            if (el.Attribute(value) ! null)                            {                                //设置属性值                                property.SetValue(item.Value,                                     Convert.ChangeType(el.Attribute(value).Value,                                     property.PropertyType), null);                            }                            else if (el.Attribute(ref) ! null)                            {                                object refObject  null;                                if (objectDefine.ContainsKey(el.Attribute(ref).Value))                                {                                    refObject  objectDefine[el.Attribute(ref).Value];                                }                                //设置关联对象属性                                property.SetValue(item.Value, refObject, null);                            }                        }                    }                }            }        }        /**//// summary        /// 获取对象        /// /summary        /// param nameid/param        /// returns/returns        public object GetObject(string id)        {            object result  null;            if (objectDefine.ContainsKey(id))            {                result  objectDefine[id];            }            return result;        }    }   App.config?xml version1.0 encodingutf-8 ?objects  object idperson typeSpringNetMyDi.Person, SpringNetMyDi    !--属性值类型注入--    property nameName valueLiu Dong/    property nameAge value27/  /object  object idpersonDao typeSpringNetMyDi.PersonDao, SpringNetMyDi    !--构造器注入--    constructor-arg nameintProp value1/    property nameEntity refperson /      /object/objects   Program   class Program    {        static void Main(string[] args)        {            ObjectFactory factory  ObjectFactory.Instance(F:\Exercise\SpringNet\Step1\SpringNet_Lesson9\SpringNetMyDi\Objects.xml);            PersonDao dao  (PersonDao)factory.GetObject(personDao);            Console.WriteLine(姓名  dao.Entity.Name);            Console.WriteLine(年龄  dao.Entity.Age);            Console.WriteLine(dao);            Console.ReadLine();        }    }    输入结果          代码下载       返回目录转载于:https://www.cnblogs.com/GoodHelper/archive/2009/11/02/SpringNet_MyDi.html
http://wiki.neutronadmin.com/news/318490/

相关文章:

  • 域名服务器都有了怎么做网站数字货币网站开发需求
  • 石家庄做网站最好的公司哪家好中国万网陈峰欣
  • 贵阳网站托管网站优化排名网站
  • 上海美容网站建设上海专业制作网站
  • 个人 可以做社交网站中国水土保持生态环境建设网站
  • 网站设计尺寸大小外贸网站建设需要什么
  • 如何让百度收录自己的网站wordpress资源下载站
  • 如何建设一个查询系统网站百度网盘下载安装
  • 浙江建站semi认证
  • wordpress建站网做程序网站需要什么代码
  • 网站如何不需要备案织梦增加网站英文名称
  • 怎么建网站新手入门建站需要什么软件
  • 网站建设的常见问题建设网站的技术性背景
  • 打开一个网站搜索页面跳转js怎样修改wordpress模板
  • 网站广告怎样做企业网站建设话术
  • 建设优化网站镇江市建设工程安全监督站网站
  • 较好的网站建设公司上海东方网首页
  • 网站开发项目说明书wordpress立即发布
  • 昌吉网站建设电话页网站设计
  • iis7站长工具北京门户网站建设公司
  • 天津市武清区网站建设上海网站建设公司 翱思
  • 小企业做网站选那种创建全国文明城市作文
  • 上海 网站建设 外包it网络维护简历模板
  • 太原网站建设斯飞网络禹州做网站的公司
  • 医院网站建设工作汇报辽宁省建设厅
  • 淘宝联盟推广可以做网站吗济南商城网站开发
  • 宁夏住房和城乡建设局网站用手机怎么打开电脑版的智慧团建
  • 自己怎么做网站啊免费网站入口2021
  • 求职网站建设那个网站都有做莱的图片
  • 公众号做微网站吗网站租用空间价格