我有一大堆静态函数,这些函数在我维护的大约15个遗留应用程序中是相同的,并已实现。我试图使这些可以更容易维护。我知道我可以创建一个静态库,并在所有的项目中添加一个引用,但是如果我做了改变,我将不得不重新编译所有的项目。
例如,这里有一个静态函数,在遗留代码中到处都是。
private static void DoFileMove(string source, string destination)
{
Directory.CreateDirectory((new FileInfo(destination)).DirectoryName);
if (File.Exists(source))
{
if (File.Exists(destination))
File.Delete(destination);
File.Move(source, destination);
}
}
所以,在代码中,有很多对以下函数的调用
DoFileMove(src,dst);
我知道我可以把它作为一个非静态方法来实现,然后注入库,把所有的调用都改为
myInjectedObject.DoFileMove(src,dst);
但我觉得这应该是可以避免的。我还想避免为应用程序中的函数创建一个静态包装器,像这样实现注入的类。
private static void DoFileMove(string source, string destination)
{
myInjectedObject.DoFileMove(source, destination);
}
有没有办法在运行时从库中动态加载一组静态函数 让我能以同样的方式使用它们在传统代码中的调用?
正如Igor所回答的那样,可以简单地添加一个静态库的引用,只要方法的签名和类名不改变,就不需要重新编译。