有没有办法在不指定参数的情况下将某些方法强加给类?

时间:2011-02-16 10:17:46

标签: c# inheritance interface

我有一个名为MANAGER的课程

  public abstract class MANAGER
{


}

没有什么复杂的: - )

这个类有多个子类 示例AD_MANAGER

  public class AD_MANAGER : MANAGER
{
    #region MEMBRES


    private AD_PROVIDER ad_provider;
    #endregion

    //================================================================================

    #region ACCESSEURS


    public AD_PROVIDER Ad_provider
    {
        get { return ad_provider; }
        set { ad_provider = value; }
    }
    #endregion

    //================================================================================

    #region CONSTRUCTORS

    public AD_MANAGER()
    {
        this.ad_provider = new AD_PROVIDER();
    }



    #endregion

    //================================================================================

    #region Public methods

    #region Get

     Stuff Here ..

    #endregion
    #endregion


}

和其他..每个经理“管理”一个名为ENTITE的特定类。因此,对于AD_MANAGER用于管理AD_ENTITE,ENTITE类只包含字段无方法..

所以这是我的问题: 我如何指定每个MANAGER类必须实现一个方法,例如isNull()但是参数类型为_ENTITE类相关..

所以AD_MANAGER必须实现bool isnull(AD_ENTITE aENTITE)方法,而PERS_MANAGER必须实现bool isnull(PERS_ENTITE aPERS)方法。

使用界面,您无法声明bool isnull(anytype);那么我该如何做到这一点?

感谢您帮助我!

4 个答案:

答案 0 :(得分:3)

创建一个界面:

public interface IAdManager<T>
{
     bool IsNull(T obj);
}

然后您的客户端类需要实现IAdManager,如:

public class AD_MANAGER : MANAGER, IAdManager<AD_MANAGER>

答案 1 :(得分:2)

是的,仿制药可能会有所帮助。

public abstract class MANAGER<T>
{
    public abstract bool isnull(T item);
}

public class AD_MANAGER : MANAGER<Ad_provider>
{
    public override bool isnull(Ad_provider item) {
    }
}

答案 2 :(得分:0)

Generics应该帮助你实现这一目标,我想!

答案 3 :(得分:0)

您可以使用两个不同的接口IAd_Manager和IPers_Manager吗?

或者将方法声明为:

bool isnull(T myParam);