Ну, общий способ добавления произвольных свойств к объекту:
$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 , которые вызываются всякий раз, когда вы пытаетесь изменить свойство объекта.
Создайте базовый класс с этими свойствами и наследуйте базовый класс от всех классов Item. Тогда в PrintCatalog просто возьмите параметр типа базовый класс, а не каждый элемент
Создайте общий базовый класс как:
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());
}
}