这并不是一个正确或错误的答案,我只是在寻找想法,意见或其他经验。
我想在c#中这样做。 Dotnet Core。
这不是我想要做的,但它是一个更好的例子,我可以从中推断出来。
让我们说我想编写一个简单的控制台应用程序来解压缩文件。
你可以做(ish)注意:这比我的真实程序简单得多。
main
{
switch(algo)
{
case "zip":
zip();
case "rar":
rar();
}
byte[] zip()
{
blah;
}
etc. etc.
}
现在忽略继承/接口等,这太硬编码了。
让我们说我想这样做,但我的主控制台程序没有解释它只需要相同的输入/输出方法等的解码。
它只是:
Interface Decode {...........................................
main
{
make a file whatever < byte[] Decode something thats passed to me();
}
但技巧是解码部分由分别编写和编译的代码完成并发布主程序。
文件夹结构:
\MyMain.exe (arguments passed as to what to decode)
\Decoders\rardecode.dll Though note this is for .NET Core
or rardecode.obj (maybe)
or rardecode.cs(compiled as needed)
zipdecode.dll
or zipdecode.obj .....
但是这个想法是可以添加到解码目录中的任何东西(使用相同的语言c#),它在某种接口之后单独编译(或不编译)(如插件)。
是否有任何特定于此想法的模式,并且有一种简单的方法在c#中执行此操作我是否必须编写某种对象加载器。
使用主代码中的继承很容易做到这一点,但插件部分很重要。经过一番谷歌搜索后,我无法用一种简单的方式来搜索想法。
希望这一切都有意义。