如何在c#中重新定义一个类

时间:2015-01-11 23:13:10

标签: c#

在VS中,我引用了一个库的DLL。

我想使用我自己对库/ api使用的类的定义而不是库的定义。我想这样做是为现有类添加功能。

类扩展是不够的,因为我想在类中添加新的静态方法。

我有要重新实现的类的源代码。

有没有办法在我的项目中重新定义类并使用它而不是dll的类而不导入库/ dll的整个源。我宁愿不导入整个源代码,只需要修改我要修改的类。

实际上,我想要修改的类不是类而是结构,并且没有partial修饰符。

1 个答案:

答案 0 :(得分:1)

尝试扩展方法:

namespace DLLNamespace
{
    public struct TestStruct
    {
        public string Name { get; set; }
        public void SetName(string name) { this.Name = name; }
    }
}

namespace ProgramNamespace
{
    public static class ExtensionMethods
    {
        public static void ReverseName(this DLLNamespace.TestStruct target)
        {
            target.Name = new string(target.Name.ToArray().Reverse().ToArray());
        }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            DLLNamespace.TestStruct ts;
            ts.SetName("John");
            ts.ReverseName();
            Console.WriteLine(ts.Name);
        }
    }
}