Castle的自定义类型转换
2008-05-14 17:05
141 查看
自定义类型Observer的定义如下:
[Serializable]
public class Observer
因为是数据配置文件可以写入如下形式
<Observers>
<item type="CSDN.Space.UpdatingService.ComponentModel.Observer">
<item><![CDATA[<Observer><IUpdatingSenderImplement>UpdatingSenderForUpdatingObserver1</IUpdatingSenderImplement></Observer>]]></item>
<item><![CDATA[<Observer><IUpdatingSenderImplement>UpdatingSenderForUpdatingObserver2</IUpdatingSenderImplement></Observer>]]></item>
</item>
</Observers>
因为Observer不是系统自带类型,需要为其编写自定义转换的实现
public class ObserverTypeConverter : AbstractTypeConverter
internal class ContainerBuilder
{
private static readonly object ton = new object();
private static IWindsorContainer container = null;
public static IWindsorContainer Create()
{
string subPath = ConfigurationManager.AppSettings["UpdatingService.Components.ConfigurationPath"];
string fileName = "";
HttpContext context = HttpContext.Current;
if (context != null)
{
fileName = context.Server.MapPath(String.Format("~/{0}", subPath));
}
else
{
//支持非网站程序
fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, subPath);
}
IWindsorContainer iWindsorContainer = Create(fileName);
//添加类型转换器
IKernel kernel = iWindsorContainer.Kernel;
IConversionManager conversionManager = (IConversionManager)kernel.GetSubSystem(SubSystemConstants.ConversionManagerKey);
conversionManager.Add(new ObserverTypeConverter());
return iWindsorContainer;
}
private static IWindsorContainer Create(string fileName)
{
if (container == null)
{
lock (ton)
{
if (container == null)
{
container = new WindsorContainer(new XmlInterpreter(fileName));
}
}
}
return container;
}
}
[Serializable]
public class Observer
因为是数据配置文件可以写入如下形式
<Observers>
<item type="CSDN.Space.UpdatingService.ComponentModel.Observer">
<item><![CDATA[<Observer><IUpdatingSenderImplement>UpdatingSenderForUpdatingObserver1</IUpdatingSenderImplement></Observer>]]></item>
<item><![CDATA[<Observer><IUpdatingSenderImplement>UpdatingSenderForUpdatingObserver2</IUpdatingSenderImplement></Observer>]]></item>
</item>
</Observers>
因为Observer不是系统自带类型,需要为其编写自定义转换的实现
public class ObserverTypeConverter : AbstractTypeConverter
internal class ContainerBuilder
{
private static readonly object ton = new object();
private static IWindsorContainer container = null;
public static IWindsorContainer Create()
{
string subPath = ConfigurationManager.AppSettings["UpdatingService.Components.ConfigurationPath"];
string fileName = "";
HttpContext context = HttpContext.Current;
if (context != null)
{
fileName = context.Server.MapPath(String.Format("~/{0}", subPath));
}
else
{
//支持非网站程序
fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, subPath);
}
IWindsorContainer iWindsorContainer = Create(fileName);
//添加类型转换器
IKernel kernel = iWindsorContainer.Kernel;
IConversionManager conversionManager = (IConversionManager)kernel.GetSubSystem(SubSystemConstants.ConversionManagerKey);
conversionManager.Add(new ObserverTypeConverter());
return iWindsorContainer;
}
private static IWindsorContainer Create(string fileName)
{
if (container == null)
{
lock (ton)
{
if (container == null)
{
container = new WindsorContainer(new XmlInterpreter(fileName));
}
}
}
return container;
}
}
相关文章推荐
- Castle的自定义类型转换
- .net类型自定义隐式(显式)转换操作的位置问题
- 自定义org.apache.commons.beanutils的类型转换器
- 重载操作符operator()与用户自定义类型转换
- core data UIColor转换为 自定义数据类型 (其他类型数据 转换同理)
- 二、Struts 2的类型转换---1.Struts 2中实现自定义的类型转换
- C#通过IConvertible接口来实现自定义类型转换和计算
- Struts2之自定义局部类型转换器、全局类型转换器
- Hibernate3原生SQL查询返回自定义类型时Integer类型的转换问题
- 自定义struts2类型转换的全局与局部错误信息。
- C++的内置类型和用户自定义类型的互相转换
- Struts2类型转换和自定义类型
- 自定义日期类型的数据绑定 前台 - 后台 或 后台 - 前台 互相转换
- day29Struts 类型转换和自定义类型转换,input视图
- SpringMVC之数据类型的转换及自定义类型转换器
- Struts2 自定义局部类型转换器 出现异常 没捕获 将进convertError
- 32-35. Struts2_类型转换错误消息的显示和定制&自定义类型转换器&类型转换器与复杂属性&集合协同使用
- Struts2数据类型转换之自定义数据类型转换
- Struts2的自定义页面提交对象类型转换
- Struts2之自定义局部类型转换器、全局类型转换器