|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。成绩 项目DALFactory是接纳工场形式计划的,计划形式的书我也曾看过java的计划形式,了解也不太深入,但对工场形式仍是较为熟习,利用它能够依据需求前往分歧的实例工具,在DALFactory项目中利用反射机制来完成依附注进,固然,它的完成仍是没有java中的spring那样天真,壮大,部分代码以下:
//<summary>
///笼统工场形式创立DAL。
///web.config必要到场设置:(使用工场形式+反射机制+缓存机制,完成静态创立分歧的数据层工具接口)
///DataCache类在导出代码的文件夹里
///能够把一切DAL类的创立放在这个DataAccess类里
///<appSettings>
///<addkey="DAL"value="SmsSystem.SQLServerDAL"/>(这里的定名空间依据实践情形变动为本人项目标定名空间)
///</appSettings>
///</summary>
publicsealedclassDataAccess
{
privatestaticreadonlystringpath=ConfigurationManager.AppSettings["DAL"];
///<summary>
///创立工具或从缓存猎取
///</summary>
publicstaticobjectCreateObject(stringpath,stringCacheKey)
{
objectobjType=DataCache.GetCache(CacheKey);//从缓存读取
if(objType==null)
{
try
{
//Assemblyass=newAssembly();
objType=Assembly.Load(path).CreateInstance(CacheKey);//反射创立
DataCache.SetCache(CacheKey,objType);//写进缓存
}
catch(System.Exceptionex)
{
stringstr=ex.Message;//
SmsSystem.Utility.SaveLog.SaveInfoToLog(str,"errorLog","非常");
}
}
returnobjType;
}
///<summary>
///不利用缓存,创立工具
///</summary>
privatestaticobjectCreateObjectNoCache(stringpath,stringCacheKey)
{
try
{
objectobjType=Assembly.Load(path).CreateInstance(CacheKey);
returnobjType;
}
catch//(System.Exceptionex)
{
//stringstr=ex.Message;//纪录毛病日记
returnnull;
}
}
///<summary>
///创立CustEmployee数据层接口
///</summary>
publicstaticSmsSystem.IDAL.ICustEmployeeCreateCustEmployee()
{
stringCacheKey=path+".CustEmployee";
objectobjType=CreateObject(path,CacheKey);
return(ICustEmployee)objType;
}
………………(别的数据层接口)
}
由这一个类,就能够猎取必要用的数据会见层的实例,但是,我在利用过程当中却老是抛出非常,[System.IO.FileNotFoundException]={"未能加载文件或程序集“SmsSystem.SQLServerDAL”或它的某一个依附项。体系找不到指定的文件。":"SmsSystem.SQLServerDAL"},说假话,关于C#这排错和调试我还手生,我百思不得其解,为何会一用反射就非常呢,全部上往我往看反射的IPA,感到我的用法没毛病啊,何况,我看PetShop的例子就是如许差未几的写法,它为何能用,下战书调试了很久仍是在堕落,我发狠心往和petShop往对照,厥后终究发明,它的dll的名字有些怪,和我的分歧,它的都是如PetShop.SQLServerDAL.dll如许的名字,而我的就是个SQLServerDAL.dll,我感到极有多是这里有成绩,由于在wb.config里我设置过
<appSettings>
<addkey="DAL"value="SmsSystem.SQLServerDAL"/>
…………
</appSettings>
如许一个程序集,弄了很久,就教他人,了局弄分明,是要项目标属性里设置程序集的称号,就能够天生SmsSystem.SQLServerDAL.dll如许的dll文件
设置,从头天生,又出了一点成绩,
范例“SmsSystem.BLL.CustEmployee”同时存在于“c:WINDOWSMicrosoft.NETFrameworkv2.0.50727TemporaryASP.NETFiles
smssystem3358d7f216ba9bb7assemblydl37296d5df40ded961_96d8c601BLL.DLL”
和“c:WINDOWSMicrosoft.NETFrameworkv2.0.50727TemporaryASP.NETFilessmssystem3358d7f2
16ba9bb7assemblydl3644d894c4cf8840a_9ad8c601SmsSystem.BLL.DLL”
中G:ASP.NETSmsSystemDefault.aspx.cs22
我细心一看,本来在web项目标bin上面,本来的SQLServerDAL.dll还在,又多了个SmsSystem.SQLServerDAL.dll,哈哈,vs2005又一个没有主动删撤除的过剩文件,今天是一个项目文件AssemblyInfo.cs删撤除后,在响应的删除文件居然没删除,不外,我把它手工删撤除,OK,统统一般,仍是感激告知我怎样改项目标Assemblyname的伴侣,否则我居然找很久也不知道怎样天生带上定名空间的dll。简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。 |
|