List<Map<java object 取值,java object 取值>gt;页面怎么取值

IT技术博客IT技术博客,精选各种精华文章供您阅读,是您学习各种IT技术的博客优选之地评论听说基于Ioc+AOP编程是在半年前,IoC是个什么,至今没理解太深入,看到一些开源的项目都有用到Unity,interface横行。
试着写了个Demo小试了下Unity,原来是UnityContainer.Resolve&T&来创建对象实例。
从用途上来看,我就觉得Unity是个基于xml配置创建对象实例的地方,而避免在代码里直接引用子类。挺酷的,比工厂模式多了基于配置。
可自己在实际项目中真没怎么用到Unity,或许是真没必要,也是自己重构的能力有限。
对于Unity的设计思路也有些好奇,想山寨一下。
先山寨实现一下UnityContainer.Resolve&T&功能好了。
1.首先,考虑到要实现基于xml配置,所以最先创建xml结构,保存相关的信息到一个独立的xml中。
2.接下来,根据这个xml结构来创建相关辅助类,实现配置信息的保存和读取。使用XmlSerialize序列化和反序列化。
在父类中实现了Save和Load方法,通过XmlSerializer对子类的xml序列化和反序列化,实现xml配置文件的保存和读取。
public abstract class ConfigurationBase&TConfiguration&
private string _
public ConfigurationBase(string filename)
_filename =
public bool Exist
get { return File.Exists(this._filename); }
public virtual void Save()
XmlSerializer serializer = new XmlSerializer(typeof(TConfiguration));
using (TextWriter writer = new StreamWriter(this._filename))
serializer.Serialize(writer, this);
public virtual object Load()
if (!Exist)
return null;
XmlSerializer serializer = new XmlSerializer(typeof(TConfiguration));
using (TextReader reader = new StreamReader(this._filename))
return serializer.Deserialize(reader);
2.UnityContainer.Resolve&T&的山寨实现
public TInterface Resolve&TInterface&()
Type type = typeof(TInterface);
//根据TInterface类型查找对应的RegisterEntry
RegisterEntry entry = this.Registers.FirstOrDefault(r =& r.Name.Equals(type.Name, StringComparison.OrdinalIgnoreCase));
if (entry == null)
throw new NullReferenceException();
return (TInterface)Activator.CreateInstance(Type.GetType(entry.Mapto));
到此,山寨UnityContainer.Resolve&T&实现.
简单测试下,
Babii.Practices.Core.dll
public interface ILogger
void Log(string message);
Babii.Practices.Imps.dll
public class ConsoleLogger : ILogger
#region ILogger Members
public void Log(string message)
Console.Write("logging message.");
#endregion
Babii.Practices.WebSite.dll&
要注意的是,Babii.Practices.Imps.dll要拷贝放到web项目的bin下。
简单的山寨了下UnityContainer.Resolve&T&。但实际上Unity的UnityContainer.Resolve&T&的过程还是很复杂的,这里只是模仿学习其思路,在对着看unity的源码一步步的学习,我想这是个不错的学习方式,山寨不是想造轮子,只是模仿学习而已。
新手第一次发文,欢迎拍砖,越多越好~~作者:
13:31 推荐.NET配套的通用数据层ORM框架:"文章分类 (8504) (2370) (1192) (135)文章档案 (1) (7) (23) (3) (834) (988) (1834) (1604) (735) (891) (688) (572) (283) (38)最新文章阅读排行榜友情链接对List&Map&String, Object&& 进行排序{FINISH_DATA=/j2ee/,&BEGIN_DATA=}{FINISH_DATA=/j2ee/,&BEGIN_DATA=}{FINISH_DATA=/j2ee/,&BEGIN_DATA=}{FINISH_DATA=/j2ee/,&BEGIN_DATA=}{FINISH_DATA=/j2ee/,&BEGIN_DATA=}{FINISH_DATA=/j2ee/,&BEGIN_DATA=}&对&BEGIN_DATA按降序排序,求大神解答。&&感激不尽!
import&java.text.ParseEimport&java.text.SimpleDateFimport&import&java.util.Dimport&java.util.Mpublic&class&TestComparator&implements&Comparator&Map&String,&String&&&{ @Override public&int&compare(Map&String,&String&&o1,&Map&String,&String&&o2)&{
SimpleDateFormat&mat&=&new&SimpleDateFormat("yyyy-MM-dd");
Date&d1&=&
Date&d2&=&
for&(String&k&:&o1.keySet())&{
d1&=&format.parse(o1.get(k).substring(11));
}&catch&(ParseException&e)&{
e.printStackTrace();
for&(String&k&:&o2.keySet())&{
d2&=&format.parse(o2.get(k).substring(11));
}&catch&(ParseException&e)&{
e.printStackTrace();
if&(d1.before(d2))&{
}&else&if&(d1.after(d2))&{
return&-1;
} }}&org.vicky.import&java.util.ArrayLimport&java.util.Cimport&java.util.HashMimport&java.util.Limport&java.util.Mpublic&class&Test&{ public&static&void&main(String[]&args)&{
List&Map&String,&String&&&list&=&new&ArrayList&Map&String,&String&&();
Map&String,&String&&map1&=&new&HashMap&String,&String&();
map1.put("FINISH_DATA=/j2ee/",&"BEGIN_DATA=/j2ee/");
Map&String,&String&&map2&=&new&HashMap&String,&String&();
map2.put("FINISH_DATA=/j2ee/",&"BEGIN_DATA=/j2ee/");
Map&String,&String&&map3&=&new&HashMap&String,&String&();
map3.put("FINISH_DATA=/j2ee/",&"BEGIN_DATA=/j2ee/");
Map&String,&String&&map4&=&new&HashMap&String,&String&();
map4.put("FINISH_DATA=/j2ee/",&"BEGIN_DATA=/j2ee/");
list.add(map1);
list.add(map2);
list.add(map3);
list.add(map4);
Collections.sort(list,&new&TestComparator());
for&(Map&String,&String&&m&:&list)&{
for&(Map.Entry&String,&String&&en&:&m.entrySet())&{
.out.println(en.getKey()&+&"&,&"&+&en.getValue());
} }}--------------------------------------------------------------

我要回帖

更多关于 amp gt amp lt 的文章

 

随机推荐