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

网站建设faq系统指什么国内做的好网站有哪些

网站建设faq系统指什么,国内做的好网站有哪些,网上购物系统功能需求分析,网站备案 接入商名称我们在第三篇中学习里一个简易的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://www.zqtcl.cn/news/582387/

相关文章:

  • 企业网站制作公司盈利百度云搜索
  • 微云影视自助建站系统大理州建设局网站门户网
  • 构建网站需要会什么意思辽宁省朝阳网站建设
  • 网站建设捌金手指专业1公司域名邮箱注册
  • 建设工程协会网站建设工程合同属于专属管辖吗
  • 网站建设费可分摊几年电子商务网站建设基础
  • wordpress api 发贴北京网站优化seo
  • 青岛网站制作服务商wordpress红包
  • 网站响应式设计如何提高网站文章收录
  • 网站 橙色如何做自己网站的seo
  • 网上商城网站建设公司兰州网站制作公司怎么样
  • 网站的动态图怎么做的获取网站访客qq
  • 黑龙江网站建站建设知名品牌形象设计公司
  • 网站建设去哪可接单怎么做微信小程序平台
  • 做外贸重新设计网站兰州网站建设慕枫
  • 服装销售 网站建设论文搭建企业网站需要什么
  • cnnic网站备案html网站建设代码
  • 金华网站建设明细报价表c苏宁网站开发
  • 在手机上怎么做微电影网站湖南人工智能建站系统软件
  • 网站做的一样算侵权吗站群建站系统
  • 骨干专业建设验收网站xueui wordpress
  • 宁波高质量品牌网站设计厂家世界上有php应用的网站
  • 网站平台建设的重要性响应式网站切图
  • 近期做网站需要什么软件网站制作常见的问题
  • vs做的本地网站甘肃省建设厅门户网站
  • 网站建设合同义务wordpress m1
  • 青海省建设局网站首页wordpress模板建站教程视频
  • 演示 又一个wordpress站点静态页面加wordpress
  • 企业做淘宝客网站有哪些有网站吗给一个
  • 深圳网站制作公司信息之梦与wordpress哪个好用