密封 Kephas 服务

Making a Kephas service sealed

我非常喜欢如何通过提供 OverridePriority 属性来覆盖 Kephas Framework 中的服务。但是,我需要一些服务不再被覆盖,以禁止来自插件的一些外部代码覆盖我的安全服务。我该怎么做?

最简单的答案是:为您的服务提供最高的覆盖优先级。

[OverridePriority(Priority.Highest)]
public class MyServiceImpl : IMyService {
    // ...
}

但是,如果以最高优先级注册了多个服务,则会出现问题,在这种情况下会抛出 AmbiguousMatchException。我的意思是,你应该控制你的代码以避免这种情况。如果您认为应用程序运行时有可能加载恶意程序集,请提供您自己的 AppRuntime 服务,该服务可能会在加载程序集之前检查程序集。

查看 https://github.com/kephas-software/kephas/wiki/Application-Services#override-priority 了解有关此主题的更多信息。