首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

麻烦高手解释一段代码,多谢!

2012-02-13 
麻烦高手解释一段代码,谢谢!~~`C# codenamespace SamTest.DALFactory{/// summary/// This class is imp

麻烦高手解释一段代码,谢谢!~~`

C# code
namespace SamTest.DALFactory{    /// <summary>    /// This class is implemented following the Abstract Factory pattern to create the DAL implementation    /// specified from the configuration file    /// </summary>    public sealed class DataAccess    {        private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];        public DataAccess() { }        public static SamTest.IDAL.IBuildingSell CreateBuildingSell()        {                        string CacheKey = path + ".BuildingSell";    //此处返回的就是SamTest.BLL.BuildingSell            System.Type type = Type.GetType(CacheKey);            return (SamTest.IDAL.IBuildingSell)Activator.CreateInstance(type);     //此处标记为 A1        }     }}namespace SamTest.BLL{    /// <summary>    /// 业务逻辑类BuildingSell 的摘要说明。    /// </summary>    public class BuildingSell    {        private static readonly IBuildingSell dal = DataAccess.CreateBuildingSell();     //此处标记为 A2        public BuildingSell()        { }        #region  成员方法        /// <summary>        /// 是否存在该记录        /// </summary>        public bool Exists(int BU_ID)        {            return dal.Exists(BU_ID);        }        /// <summary>        /// 增加一条数据        /// </summary>        public void Add(SamTest.Model.BuildingSell model)        {            dal.Add(model);        }        /// <summary>        /// 更新一条数据        /// </summary>        public void Update(SamTest.Model.BuildingSell model)        {            dal.Update(model);        }}namespace SamTest.IDAL{    /// <summary>    /// 接口层IBuildingSell 的摘要说明。    /// </summary>    public interface IBuildingSell    {        #region  成员方法        /// <summary>        /// 是否存在该记录        /// </summary>        bool Exists(int BU_ID);        /// <summary>        /// 增加一条数据        /// </summary>        void Add(SamTest.Model.BuildingSell model);        /// <summary>        /// 更新一条数据        /// </summary>        void Update(SamTest.Model.BuildingSell model);        /// <summary>        /// 删除一条数据        /// </summary>        void Delete(int BU_ID);        #endregion  成员方法    }}public partial class Member_Member_SellFlats_UpdateBuild : System.Web.UI.Page{    private void UpdateInfo()    {       SamTest.BLL.BuildingSell BLLobj = new SamTest.BLL.BuildingSell();       BLLobj.Update(Modelobj);    }}



A1返回的是一个接口类型,然后A2处的代码让感觉像是实例化了一个接口对象,不知道这里怎么理解,接口是不能实例化的,不知道这里这么写是为什么,麻烦知道的朋友帮忙解释一下,谢谢!不胜感激!~

[解决办法]
是返回一个对象,该对象实现了这个接口.
[解决办法]
IBuildingSell dal = DataAccess.CreateBuildingSell

并不是表示实例化IBuildingSell 接口,而是实例化一个实现了IBuildingSell 接口的对象.

热点排行