类问题的接口暗示

本文关键字:暗示 接口 问题 | 更新日期: 2023-09-27 18:36:53

这是我的简单塞纳里奥。我有一个实现接口的类(BLL类)。我想做的是,在前提层内部,我希望用户只访问接口并将类与此接互,而不是直接访问类函数。有什么办法吗?

我的 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();

我不想这样。我只想访问在接口内声明的方法。

类问题的接口暗示

我不明白你为什么想要它,但"解决方案"可能是将public方法更改为显式接口实现。为此,请删除访问修饰符(此处public ),并在方法名称前面加上IOfis.。喜欢这个:

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

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

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