通过MEF导入在子类中设置继承的属性



我正试图通过MEF导入在子类中设置继承的属性。基类声明了一个属性,但没有指定导入。然后应该将多个子类导入到该属性中,每个子类都使用自己的导入规范。

如下所示:

class BaseClass
{
public SomeType SomeProperty { get; set; }
}
class SubClass : BaseClass
{
[Import(...)] // declaring a new property and importing here is easy
public AnotherType AnotherProperty { get; set; }
// how can I MEF import into the inherited SomeProperty?
}

我找到的唯一解决方案是:

  1. 在BaseClass中使SomeProperty为虚拟,并在子类中重新声明/覆盖它。这有可能在子类中复制代码的缺点。我实际上并不想重新声明该属性,只是指定一个导入
  2. 用子类中的另一个属性包装SomeProperty,该属性本质上是传递setter并导入到setter中。这看起来很难看
  3. 在设置SomeProperty的子类上使用具有相应导入属性的构造函数。如果以这种方式继承和设置的属性数量越来越大,那么这不是一种理想的方法

对于简单干净的方法,如有任何帮助或想法,我们将不胜感激。

总有使用RegistrationBuilder的选项,我相信你会在网上找到使用示例。

基本上,它允许您将导出/导入的规范和创建的类/类型解耦。在您的情况下:

  • Skpi在基类中声明导入
  • 创建零件目录(或组成零件(时,您应指定RegistrationBuilder(例如,请参阅接受ReflectionContext继承的ReflectionContextTypeCatalog的ccor(,该注册生成器在每个实现类型的基础上添加预期导入

最新更新