1

这是我的简单场景。我有一个实现接口的类(BLL 类)。我想做的是,在 presantation 层内,我希望用户只访问接口并与该接口交互类,而不是直接与类函数交互。有没有办法做到这一点?

我的 BLL 类实现了接口:

    public interface IOfis
    {

        bool Add(Ofis ofs);
        bool Update(Ofis ofs);


    }

    public class BLL_Ofis:IOfis
    {
        public bool Update(Ofis ofs)
        {
            DAL_Ofis ofs_dal = new DAL_Ofis();
            try
            {
                return ofs_dal.Update(ofs);
            }
            catch (Exception)
            {

                throw;
            }
            finally { ofs_dal = null; }
        }

      public bool Add(Ofis ofs_obj)
        {
            DAL_Ofis ofs_dal = new DAL_Ofis();
            try
            {
                return ofs_dal.Add(ofs_obj);
            }
            catch (Exception)
            {

                throw;
            }
            finally { ofs_dal = null; }
        }
}

在 presantatoin 层内,我这样使用它:

IOfis bll_ofis = new BLL_Ofis();
bll_ofis.Update();

但在这种情况下,我也可以像这样直接到达班级:

 BLL_Ofis bll_ofis = new BLL_Ofis();
 bll_ofis.Update();

我不想要那个。我只想达到在接口内声明的方法。

4

2 回答 2

2

我不明白您为什么想要它,但“解决方案”可能是将public方法更改为显式接口实现。为此,请删除访问修饰符(此处)并添加到方法名称的public前面。IOfis.像这样:

public class BLL_Ofis : IOfis
{
    bool IOfis.Update(Ofis ofs)
    {
        ...
    }

    ...
}

只有当变量的编译时类型是接口类型时,才能调用显式接口实现。

于 2013-10-26T09:22:18.893 回答
0

Add您还必须在您的类中实现该方法。至于可见性,public请从类声明中删除,这将使其仅对驻留在同一程序集中的代码可见。

于 2013-10-26T08:09:46.683 回答