English 中文(简体)
不工作的竞争方方法
原标题:ComposeParts method not working

我先出口一台ITAgger和一台IWpfTextViewMargin,这两个部件都是作为微型信贷的组成部分。 我想在我的马林法典中进口这颗卫星,然后在塔戈使用一些成员。

现在,我试图在马林阶层使用部件,然后进口IViewTaggerProvider。 我使用了以下法典,这可见于许多教育、青年和体育部的辅导。

[Import(typeof(IViewTaggerProvider))]
public IViewTaggerProvider vt_provider { get; set; }

var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(TestMargin).Assembly));
_container = new CompositionContainer(catalog);
//Fill the imports of this object
try
{
    this._container.ComposeParts(this);
}
catch (CompositionException compositionException)
{
    System.Diagnostics.Trace.WriteLine(compositionException.Message);
}

以及出口法。

[Export(typeof(IViewTaggerProvider))]
[ContentType...

出口类别的定义是另一个名称空间,但相同。

在这里,我提出这样的问题,即竞争各方放弃进口货物。 我不知道该参数为何是。 我试图通过catalog<>。 我也提到了debug meffall,认为出口类别具有正确的合同名称和出口类型特性。


在检查了视像仪EFx和脱胎盘后,我发现,这可能是因为IViewTaggerProvider进口了视觉演播室。 IlassificationTypeRegistryservice, 后者也是MEF的一部分,导致IViewTaproggerer被拒。

[Primary Rejection]
 [Exception] System.ComponentModel.Composition.ImportCardinalityMismatchException: No valid exports were found that match the constraint  ((exportDefinition.ContractName == "Microsoft.VisualStudio.Text.Classification.IClassificationTypeRegistryService") AndAlso (exportDefinition.Metadata.ContainsKey("ExportTypeIdentity") AndAlso "Microsoft.VisualStudio.Text.Classification.IClassificationTypeRegistryService".Equals(exportDefinition.Metadata.get_Item("ExportTypeIdentity")))) , invalid exports may have been rejected.

因此,一个解决办法是增加出口IClassificationTypeRegistry Service的大会。 它是一个视觉演播室核心编辑服务,但我无法发现哪些组装出口。 任何人都知道这一点?

或者说有什么更好的解决办法?

最佳回答

TryViewMEFx。 下面是关于开始访问的短博客条目:https://ihadthisideaonce.com/102/22/ 启动-with-technology-mefx/。 一旦您上台并运行,视像仪会利用视像仪装上测试船组,看看看是否从该组出口过任何IViewTaggerProvider。

还铭记进口 Mistmatch 仅指出口缺失。 这还可能意味着能够满足进口需求的出口数量太多,而微型信贷也无法选择哪一种产品。 因此,当你在视力测算中心审查你的组成时,检查一下是否太多。

该参数:

void Bootstrap()
{
  var catalog = new AggregateCatalog();
  catalog.Catalogs.Add(new AssemblyCatalog(typeof(TestMargin).Assembly));
  _container = new CompositionContainer(catalog);

 //Fill the imports of this object
 try
 {
    var objectToSatisfy = this;
    // var objectToSatifsy = new SomeOtherObjectWithImports();

    this._container.ComposeParts(objectToSatisfy);
 }
 catch (CompositionException compositionException)
 {
    System.Diagnostics.Trace.WriteLine(compositionException.Message);
 }
}

当您打电话ComposeParts时,你将反对该方法。 石油换粮食部将接受你通过的目标,并检查是否需要进口。 如果它发现任何进口产品,它就会发现ata,并试图满足这些.。 您可以通过<条码>ComposeParts方法>。 因此,我略微修改了你的样本代码,以显示两种不同的选择。 一种选择是制造一些需要满足的物体,然后将其放在集装箱内。 这是我在以下评论中所做的那样:var Object Totisfy = 新的其他物体:)。 但通常的情况是,我们想要堆肥的物体是呼号的同一物体。 因此,我们不需要制造一个新物体去集装箱,我们已经有了目标,我们只是需要提及。 在C#中,我们可以参考使用关键词的当前标本<>。 因此,当我们想在称作<条码>Compose Parts的同一物体上满足进口时,我们可以通过将<条码>的<条码/代码>作为<条码>的论点来做到这一点。 ComposeParts

<代码>ComposeParts方法的论据是参数阵列。 非正式地来说,这只是你写了<条码>内容。 在实践中,这意味着你可以一劳永逸地通过多种物体。

container.ComposeParts(this, objectToSatifsy, thirdObjectToCompose);

如果标的<代码>ComposeParts 因此,你不应将<代码>this作为理由。 相反,制造了你想要制造的那种物体,并将之传递给该方法。 此外,除非你想要堆肥的所有部分都能在<条码>上查到,否则,你需要为确实提供部件并添加到您的AggregateCatalog的议会设立更多的AssemlbyCatalog。

问题回答

暂无回答




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...