我真的很喜欢一个人如何通过提供OverridePriority属性来覆盖服务中的服务。但是,我需要某些服务不再被覆盖,以禁止插件中的某些外部代码超越我的安全服务。我该怎么做?
最简单的答案是:提供服务的最高优先级。
[OverridePriority(Priority.Highest)]
public class MyServiceImpl : IMyService {
// ...
}
但是,如果以最高优先级注册了多个服务,则可能会有问题,在这种情况下,抛出了AmbiguousMatchException
。我的意思是,您应该控制您的代码以避免这种情况。如果您认为应用程序运行时加载了恶意组件,请提供您自己的AppRuntime
服务,该服务可能会在加载之前检查组件。
检查https://github.com/kephass-software/kephace/wiki/application-services-services#override-priority有关此主题的更多信息。