- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
几天来我一直在试图解决这个问题,但没有运气。
我正在尝试使用 [ImportMany] 从一个包含 IEditorSystem 类型导出的 DLL 目录中导入,该目录具有 IEditorSystemMetadata 类型的自定义元数据。我想先获取元数据,然后将其推送到某些文本框等,以便用户可以选择要使用的 EditorSystem,并在选择后加载该系统...
我一直在尽我所能地遵循示例,这是迄今为止我所拥有的。
[ImportMany]
public ObservableCollection<Lazy<IEditorSystem, IEditorSystemMetadata>> EditorSystemList
[Export(typeof(IEditorSystem))]
[SignalSystemData("Very Very Long Name", "Short Name")]
public class MyEditorSystem: IEditorSystem
{
public MyEditorSystem()
{
}
}
AggregateCatalog Catalog = new AggregateCatalog(
new DirectoryCatalog(@".\EditorSystems"),
new AssemblyCatalog(Assembly.GetExecutingAssembly()));
CompositionContainer Container = new CompositionContainer(Catalog);
Container.ComposeParts(this);
public ObservableCollection<IEditorSystem> EditorSystemList
最佳答案
没有看到你的代码,我相信你需要改变的是
public ObservableCollection<Lazy<IEditorSystem, IEditorSystemMetadata>> EditorSystemList
public IEnumerable<Lazy<IEditorSystem, IEditorSystemMetadata>> EditorSystemList;
class Program
{
static void Main(string[] args)
{
var c = new Class1();
var v = c.EditorSystemList;
foreach (var lazy in v)
{
if (lazy.Metadata.LongName == "Very Very Long Name")
{
var v2 = lazy.Value;
// v2 is the instance of MyEditorSystem
}
}
}
}
public class Class1
{
[ImportMany]
public IEnumerable<Lazy<IEditorSystem, IEditorSystemMetadata>> EditorSystemList;
public Class1()
{
var catalog = new AggregateCatalog(
new AssemblyCatalog(Assembly.GetExecutingAssembly()));
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
}
[Export(typeof(IEditorSystem))]
[SignalSystemData("Very Very Long Name", "Short Name")]
public class MyEditorSystem : IEditorSystem { }
public interface IEditorSystem { }
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class SignalSystemDataAttribute : ExportAttribute
{
public SignalSystemDataAttribute(string longName, string shortName)
: base(typeof(IEditorSystem))
{
LongName = longName;
ShortName = shortName;
}
public string LongName { get; set; }
public string ShortName { get; set; }
}
public interface IEditorSystemMetadata
{
string LongName { get; }
string ShortName { get; }
}
关于mef - ImportMany 元数据未导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3624878/
几天来我一直在试图解决这个问题,但没有运气。 我正在尝试使用 [ImportMany] 从一个包含 IEditorSystem 类型导出的 DLL 目录中导入,该目录具有 IEditorSystemM
我在 MEF 中为 ImportMany 创建了自定义元数据属性,但 ImportMany 始终为空。 [MetadataAttribute] [AttributeUsage(AttributeTar
我刚刚接触 MEF,想知道如何定义使用 [ImportMany] 导出的集合的顺序? 我的意思是,如果我有两个实现接口(interface) IService 的类(Class1、Class2),并且
我正在使用 MEF 在构造函数中导入许多(带有元数据)。我已经按照视频教程尝试模仿它,但到目前为止它还不太奏效。简而言之,我重新命名了一些东西并进行了总结,但是: AbstractImportMe.c
我无法找到我的问题的答案。我正在使用 MEF 来查找和创建实现 IPlugIn 的类,但我最终得到了每个 PlugIn 类的两个版本。我已经确定 AggregateCatalog 仅包含一个程序集,该
我正在尝试在使用 MEF 加载一些插件的 WPF 应用程序上调试程序集导入问题,并寻找解决此特定异常的想法: More than one export was found that matches t
FooService.cs: public interface IFooService { int Foo(); } [Export("Foo1", typeof(IFooService))]
我遇到了以下问题: 在 MEF 上使用 ImportMany 属性时,MEF 始终至少会创建一个 IService 接口(interface)实现的实例。 因为我已经有一个现有的实例(通过在下面的代码
我是 MEF 的新手,想在我目前正在开发的项目中使用它。 想法:我想写一个FileLoader这需要 T作为我正在尝试加载的类型的参数,并为我提供有关支持将哪些文件扩展名加载到该类型中的数据。类型加载
我正在使用 MEF 来组合来自多个程序集的导出类型。我正在使用一个基类,它应该像派生类中指定的那样具有 ImportMany 依赖性。它看起来像这样: 基础组件: public abstract cl
我是 mef 的初学者,所以我有一个问题 :)我有以下内容: [PartCreationPolicy(CreationPolicy.Shared)] [Export(typeof(SharedExpo
我刚刚开始使用托管可扩展性框架。我有一个导出的类和一个导入语句: [Export(typeof(IMapViewModel))] [ExportMetadata("ID",1)] public cla
我刚刚在我的 mef 应用程序中发现了一个问题;问题是,我有一个 [Import]而不是 [ImportMany]在我的IEnumerable属性(property)。我开始想为什么。 MEF 看到注
我正在开发一个使用 MEF 的应用程序(特别是 MEF 2 Preview 5 ),我在尝试基于通用接口(interface)导入时遇到了问题。 我有一个界面: public interface IM
我是一名优秀的程序员,十分优秀!