如何在 c# 中重新定义类

本文关键字:定义 新定义 | 更新日期: 2023-09-27 18:37:19

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

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

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

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

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

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

如何在 c# 中重新定义类

尝试扩展方法:

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);
        }
    }
}