Как добавить новое свойство в системный класс? - PullRequest
0 голосов
/ 18 марта 2011
using System;

namespace Telerik.Windows.Controls
{
    public class Resource : IResource
    {
        public Resource();
        public Resource(string name);
        public Resource(string name, string type);

        public string DisplayName { get; set; }
        public string ResourceName { get; set; }
        public string ResourceType { get; set; }
    }
}

Я хочу добавить свойство public string NoOfAppointments { get; set; } к этому классу, чтобы настроить класс ресурсов для моего приложения.

Как мне его достичь?

Можем ли мы определить частичный класс Resource, если можно, как я могу определить?

После добавления нового свойства я должен использовать новое производное или частичное класс такой же как Ресурс Класс.

Ответы [ 4 ]

0 голосов
/ 18 марта 2011

Наконец-то я воспользовался прямым движением, чтобы все заработало.

    public class CustomResource: Telerik.Windows.Controls.Resource
    {
        private int noOfAppointments;
        public int NoOfAppointments
        {
            get { return noOfAppointments; }
            set
            {
                if (value > 0)
                    noOfAppointments = value;
                else
                    noOfAppointments = 0;
            }
        }
    }
0 голосов
/ 18 марта 2011

Вы не можете добавить свойство в существующий класс. Частичные классы вам не помогут, потому что они являются функцией времени компиляции для исходных файлов в одном проекте - вы не можете добавить класс из другой сборки, используя частичные классы.

Вы можете получить новый класс из Resource, как показал Мариус - но тогда везде, где вам дается только Resource, вам придется приводить к нужному типу - и если Telerik контролирует ресурс копирования объекты, не замечая подклассы, которые могут вызвать проблемы. Это может или не может на самом деле быть проблемой для вас - трудно сказать, не зная больше о том, что вы пытаетесь сделать.

0 голосов
/ 18 марта 2011

Я не знаю, чего именно вы пытаетесь достичь, но я совершенно уверен, что ваш путь неверен.Если вы можете больше рассказать, что это за класс Resource, как вы его использовали и где NoOfAppointments соответствуют картине, вам будет легче помочь.

Telerik - сторонняя библиотека.В большинстве случаев вы не можете изменить определение классов внутри сторонней библиотеки.Вы также не можете использовать частичные классы для классов из сторонних библиотек.Вы можете получить уроки из других классов, и Мариус Банчила только что показал вам, как вы делаете это в своем ответе.Обратите внимание, что он не повторяет класс из вашего вопроса, а определяет новый класс и указывает, что он является производным от него: class MyResource : Resource

Но вы не можете заставить библиотеку использовать ваш класс, если он зашитиспользовать свой собственный класс, так что, скорее всего, получение не поможет вам.

0 голосов
/ 18 марта 2011

Так что это не работает, или?

public class MyResource : Resource
{
    public MyResource();
    public MyResource(string name);
    public MyResource(string name, string type);

    public string NoOfAppointments { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...