基类实例化MEF目录和容器,并将它们保存为类变量,以便稍后进行参照访问
public class FieldProcessor
{
private CompositionContainer _container;
private DirectoryCatalog dirCatalog;
public FieldProcessor()
{
var catalog = new AggregateCatalog();
//Adds all the parts found in the same assembly as the TestPlugin class
catalog.Catalogs.Add(new AssemblyCatalog(typeof(TestPlugin).Assembly));
dirCatalog = new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory + "Plugin\\");
catalog.Catalogs.Add(dirCatalog);
//Create the CompositionContainer with the parts in the catalog
_container = new CompositionContainer(catalog);
}
public void refreshCatalog()
{
dirCatalog.Refresh();
}
} ...
Run Code Online (Sandbox Code Playgroud)
这是我试图覆盖的插件.我的更新测试是,返回的stings输出到文本框,我更改了插件返回的字符串,重建并将其复制到插件文件夹中.但它不会更新正在运行的应用程序,直到我关闭并重新启动应用程序.
[Export(typeof(IPlugin))]
[ExportMetadata("PluginName", "TestPlugin2")]
public class TestPlugin2 : IPlugin
{
public IEnumerable<IField> …Run Code Online (Sandbox Code Playgroud) 
它大部分时间都是这样做的,但并不总是这样,而且我已经无法建立一个模式,因为它没有抛出错误.此外,它仅针对后续文件播放的第一个文件执行此操作.它避免了Try catchs的错误处理.
Public Sub playSelected(ByVal fileStr As String)
If File.Exists(fileStr) Then
Debugging.DebugPrint(" Play: " & fileStr)
MediaPlayer.URL = fileStr
Try
MediaPlayer.Ctlcontrols.play()
Catch ex As Exception
MessageBox.Show("Could Not play the selected File please try again. Exception : " + ex.Message)
End Try
Else
Debugging.DebugPrint(" File Does not Exist: " & fileStr)
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
随着信息向jornare提供信息并向正确的方向发展,我将解释我的决议,以及下面的代码,希望它有所帮助.
首先,我必须以几种不同的方式修改建议的答案.在调用上面的playSelected方法的类中声明了以下两行.
Public Declare Function SetErrorMode Lib "kernel32.dll" …Run Code Online (Sandbox Code Playgroud) 在使用聚合物项目时,我发现他们在Shadow DOM polyfill上的页面有一组已知的限制http://www.polymer-project.org/platform/shadow-dom.html#known-limitations.
列表的第一个限制是:

在我运行的一些简单测试中,我没有看到任何封装问题.我有一个jsbin,我一直在测试.http://jsbin.com/ANeCUv/10/edit.
为了测试我从聚合物模板里面的样式标签中删除了那个css import语句.我注意到,即使在上面标题中的样式标记中仍然调用相同的导入,该元素也变得没有样式.这至少在这种情况下向我展示了封装阻止了jquery-ui.css为我的元素的Shadow DOM设置样式.
我决定更具体地研究这个问题,并在样式指南http://www.polymer-project.org/articles/styling-elements.html的评论中找到了一些参考文献,例如这个参考文献.

我再次使用较旧版本的IE进行了测试,并确认css正在从元素外部引用的样式中流失.
我理解聚合物及其polyfill的设计,是为了使新的Web技术可访问,并允许旧版本的浏览器支持不支持的功能或优雅地进行故障转移.所以我理解这个问题如何被视为Shadow DOM polyfill的限制.
除了支持旧浏览器的这个问题,我还没有找到其他封装问题.虽然"CSS封装有限"是一个非常通用的标签,如果唯一的特定已知限制是与旧浏览器不兼容.
除了旧版浏览器中Shadow DOM polyfill支持的不一致之外,还有CSS Encapsulation的其他已知问题吗?
我一直在努力学习更多有关CSS动画的知识.我一直主要使用像animate.css这样的库中预先构建的动画.大多数功能都很好用,我想我更了解概念和组件.
然而,来自该库的一个动画,铰链,在animate.css网站上工作,但不在我自己的小提琴中.它不会完全失败,但它只会产生3个关键帧移动,而示例网站则产生5-6个.所以它正在使用动画而不是我期望的方式.
我责怪我的标题中的关键帧,因为在视觉上它似乎没有摆动.我将此归因于不起作用的关键帧,但这可能过于简单化了,或者我可能误解了这个问题,所以请注意这是假设的来源.
我用我的主浏览器Chrome v35和我的计算机上的IE 11副本进行了测试,评论员指出FF 30没有出现这个问题.他们还表明,这可能与它是一个依赖关系,当它被明确定义,而不是通过animate.css cdn拉入,它在我的浏览器中工作.
我一直在做一般研究以更好地理解CSS动画,特别是这本开发人员指南有助于理解基础知识并了解实例如何工作.这些与小提琴一起特别有用,可以看到对这些示例的修改是如何工作的.
更具体的这个问题我拉开源来看看如何定义CSS动画.代码是在github上发表这里.铰链的特定关键帧如下
@keyframes hinge {
0% {
-webkit-transform-origin: top left;
-ms-transform-origin: top left;
transform-origin: top left;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
}
20%, 60% {
-webkit-transform: rotate3d(0, 0, 1, 80deg);
-ms-transform: rotate3d(0, 0, 1, 80deg);
transform: rotate3d(0, 0, 1, 80deg);
-webkit-transform-origin: top left;
-ms-transform-origin: top left;
transform-origin: top left;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
}
40%, 80% {
-webkit-transform: rotate3d(0, 0, 1, 60deg); …Run Code Online (Sandbox Code Playgroud) 我正在使用Java 8 Lambdas,并且在简单的用例方面取得了成功.我来自Java和C#.NET的混合背景,因此我熟悉代码中的lambda.
在我当前的用例中,我试图从一个名为values的Collection中返回一个List.我这样做成功了
values.stream().map(x -> x).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
相对简单明了.我想做同样的事情,但只从Collection中添加项目,其中项目上的布尔标志设置为true.我认为那会像这样工作
values.stream().map(x -> { if(x.isActive())return ((Model)x);}).collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
但是编译器一直在显示这个错误:Type mismatch: cannot convert from List<Object> to List<Model>我相信编译器应该足够智能,以便从map函数中知道输出类型,并且确实在我原来的简化示例中.这就是为什么我认为这不是最好的方法.
对于.NET堆栈中的任何人来说,C#/ LINQ中的等价物都是
values.Where(x => x.isActive()).ToList();
Run Code Online (Sandbox Code Playgroud)
我知道有很多其他很好的方法可以在没有lambdas的情况下做到这一点,但我想知道如何使用Java Lambdas在Java中实现这一点?