如何将新属性添加到系统类?

时间:2011-03-18 06:34:13

标签: c# inheritance

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; }属性,以便为我的应用程序自定义资源类。

我如何实现它?

我们可以定义资源的部分类,如果我们可以如何定义?

添加新属性后,我应该使用新的派生部分类,与资源类相同。

4 个答案:

答案 0 :(得分:0)

所以这不起作用,或者?

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

    public string NoOfAppointments { get; set; }
}

答案 1 :(得分:0)

您无法将属性添加到现有类。部分类对您没有帮助,因为它们是同一项目中源文件的编译时功能 - 您无法使用部分类从不同的程序集添加到类中。

你可以从Resource派生出一个新类,正如Marius所展示的那样 - 但是随后你只得到一个Resource,你必须转换为正确的类型 - 如果是Telerik控制复制资源对象而不会注意到子类,这可能会导致问题。这可能会或者可能不会实际上对你来说是一个问题 - 如果不了解更多关于你想要做什么的话,很难说。

答案 2 :(得分:0)

我不知道你到底想要达到的目的,但我很确定你的方式是不正确的。如果你能说得更多,这个Resource类是什么,你如何使用它以及NoOfAppointments适合图片的地方,它会更容易帮助。

Telerik是第三方图书馆。大多数情况下,您无法更改第三方库中类的定义。您也不能对第三方库中的类使用部分类。你可以从其他课程中找到你的课程,Marius Bancila在你的答案中向你展示了你是如何做到这一点的。请注意,他不会在您的问题中重复该类,而是定义一个新类并指定它是从它派生的:class MyResource : Resource

但如果硬件连接使用自己的类,你就不能强迫你使用你的类,所以很可能派生对你没用。

答案 3 :(得分:0)

最后我用直接的方式去做它的工作。

    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;
            }
        }
    }
相关问题