Есть ли способ навязать некоторые классы без указания параметров? - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть класс с именем 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_ENTITE используется AD_MANAGER, а класс ENTITE содержит только поля без методов.

Так вот мой вопрос: Как я могу указать, что каждый класс MANAGER должен реализовывать метод, например isNull (), но с параметрами связанными с классом типа _ENTITE ..

Итак, AD_MANAGER должен реализовать метод bool isnull(AD_ENTITE aENTITE), а PERS_MANAGER - реализовать метод bool isnull(PERS_ENTITE aPERS).

С интерфейсом вы не можете объявить bool isnull(anytype); Так, как я могу сделать такую ​​вещь?

Спасибо за попытку помочь мне!

Ответы [ 4 ]

3 голосов
/ 16 февраля 2011

Создать интерфейс:

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

Тогда ваши клиентские классы должны реализовать IAdManager, например:

public class AD_MANAGER : MANAGER, IAdManager<AD_MANAGER>
2 голосов
/ 16 февраля 2011

Да, дженерики, вероятно, помогут.

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) {
    }
}
0 голосов
/ 16 февраля 2011

Можно ли использовать два разных интерфейса IAd_Manager и IPers_Manager?

Или альтернативно объявите метод как:

bool isnull (T myParam);

0 голосов
/ 16 февраля 2011

Обобщения должны помочь вам достичь этого, я думаю!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...