Как вызвать метод с разными объектами в качестве типов параметров

Ну, общий способ добавления произвольных свойств к объекту:

$object->attributename = value;

Вы можете, намного более чистые, предварительно определить атрибуты в своем классе (PHP 5+ specific, в PHP 4 вы будет использовать старый var $attributename)

class baseclass
 { 

  public $attributename;   // can be set from outside

  private $attributename;  // can be set only from within this specific class

  protected $attributename;  // can be set only from within this class and 
                             // inherited classes

, это настоятельно рекомендуется, поскольку вы также можете документировать свойства в определении вашего класса.

Вы также можете определить getter и методы setter , которые вызываются всякий раз, когда вы пытаетесь изменить свойство объекта.

-2
задан gehbiszumeis 18 January 2019 в 13:14
поделиться

2 ответа

Создайте базовый класс с этими свойствами и наследуйте базовый класс от всех классов Item. Тогда в PrintCatalog просто возьмите параметр типа базовый класс, а не каждый элемент

0
ответ дан Merhat Pandzharov 18 January 2019 в 13:14
поделиться

Создайте общий базовый класс как:

public abstract class ArticleItemBase
{ }

и пусть ваши классы наследуют от него как:

public class ArticleItem : ArticleItemBase

и

public class ArticleItemB : ArticleItemBase

. Сделайте так, чтобы ваш PrintCatalog принимал Словарь с типом общего значения и ограничивал его только объектами вашего базового класса:

public static void PrintCatalog<T>(Dictionary<string, T> catalog) where T : ArticleItemBase
{
    foreach (var item in catalog)
    {
        Console.WriteLine(item.Value.ToString());
    }
}
0
ответ дан kaffekopp 18 January 2019 в 13:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: