我想为其他插件B / C可以使用它的软件创建一个插件A.现在棘手的部分是我需要它遵循这些规则:
对于B来说,它很容易解决,因为A不存在就会抛出错误。
现在对于C,我该如何实现这一目标?我想使用能够使用A,但如果A不存在则不应该中断。
答案 0 :(得分:1)
对于1种情况 - 只是在B级的类级别向A添加依赖性将无法加载B类。
允许可选的失败 - 将对A的所有调用包装到方法中并尝试/捕获对这些方法的调用,以便捕获JIT失败:
class C
{
// no references to A at class level
int MethodUsingA()
{
// use A here
}
int MethodTryingToUseA()
{
try
{
return MethodUingA(); // will throw loader error
// during JIT if A assembly is missing
}
catch // use specific exception, LoaderException?
{
return 42; // JIT of MethodUingA failed
}
}
如果您需要大量类/方法的解决方案,您可以考虑反射以手动加载,并在加载失败时提供替代实现。
答案 1 :(得分:1)