.net 使用ImportMany属性时,如何要求至少导入一个零件?
默认情况下,.net 使用ImportMany属性时,如何要求至少导入一个零件?,.net,mef,.net,Mef,默认情况下,ImportAttribute要求只有一个零件满足属性中指定的契约。可以使用ImportAttribute.AllowDefault属性修改此行为。本质上,这改变了行为,允许零或一个部分满足合同。如果没有零件,则使用该导入的默认值 ImportManyAttribute允许零个或多个零件满足合同要求。MEF将使用一个空集合、一个单例集合或一组部件(取决于找到的内容)来满足此导入 如何告诉MEF空集合无效 我应该: 如果集合为空,是否实施ipartimportssatifiedNoti
ImportAttribute
要求只有一个零件满足属性中指定的契约。可以使用ImportAttribute.AllowDefault
属性修改此行为。本质上,这改变了行为,允许零或一个部分满足合同。如果没有零件,则使用该导入的默认值
ImportManyAttribute
允许零个或多个零件满足合同要求。MEF将使用一个空集合、一个单例集合或一组部件(取决于找到的内容)来满足此导入
如何告诉MEF空集合无效
我应该:
ipartimportssatifiedNotification
并从onimportssatified
引发异常导入或重新配置属性
默认情况下,MEF只理解三个基数:ZeroOrOne、ExactlyOne或ZeroOrMore。看见因此,您不能在MEF属性的约束范围内自己表达它。我不建议在OnImportMessage中抛出异常,因为您可能会遇到其他不可预测的问题
恐怕你能做的最好的事情就是导入许多内容,并在何时使用这些导入内容的背景下进行验证。这令人沮丧,希望他们将来添加一个或多个内容。