Tag: 插件

Unity的Android插件给出了错误

我正在做一个测试应用程序,以了解我们如何通过插件使用java代码统一使用java代码。 我在eclipse中使用Android 3.2创建了一个简单的Android Activity类。 package com.control.unitycontrol; import com.unity3d.player.UnityPlayerActivity; import android.os.Bundle; import android.util.Log; import android.widget.Toast; public class MainActivity extends UnityPlayerActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(“TEST”,”Foo method is called is called 1111″); } public static void foo(){ Log.d(“TEST”,”Foo method is called is called 2222″); // this method is never called }} 这是我的AndroidManifest.xml 根据教程,我将classes.jar复制到我的libs文件夹,然后将其添加到我的类路径中。 […]

如何制作可插入的静态类

我知道如何在c#中制作可插拔的东西。 定义一个接口, Activator.CreateInstance()等。或者我可以有一个显式创建插件类实例的代码路径。 很多种方法。 但是,如果我想要可插拔的服务是静态的(我知道我可以重构,所以它不是,但这不是问题的重点) 具体例子。 我有一个提供磁盘I / O抽象的类(读取文件,列表目录,….)。 现在我想要这种抽象的不同实现,它可以提供来自真实FS,数据库的文件。 基于Olivier Jacot-Descombes的回复,我将有一个像这样的FileSystem类(这是真的) public static class FileSystem { static IFSImplemenation s_imple; static FileSystem() { if() // converted to singleton instead of static s_imple = new OldFileSystem() else s_imple = new DbFileSystem(); } public static byte[] ReadFile(string path) { return s_imple.ReadFile(path); } … } 重申 – 我有一大堆代码,我不想改变,所以保持调用签名相同很重要 […]

如何从Visual Studio加载项中获取正在运行的进程的堆栈跟踪?

我在C#中编写一个Visual Studio加载项,当我在同一个Visual Studio窗口中调试一个进程时,它将运行,我需要从我的加载项中访问该进程的堆栈跟踪。 我尝试将此代码放入我的加载项,但它返回加载项的堆栈跟踪,而不是我正在调试的进程。 System.Diagnostics.StackTrace stacktrace = new System.Diagnostics.StackTrace(true); System.Diagnostics.StackFrame stackframe = stacktrace.GetFrame(0); 任何帮助,将不胜感激。

.NET应用程序是否有最大数量的程序集?

相当多的应用程序支持插件。 拥有大量插件有什么缺点吗? 是否存在一个可能性能下降的最佳点? 您在应用中看到的最大assembly数量是多少?

使用MEF在运行时加载插件

我的应用程序允许用户编写可在运行时实例化的插件(实现IPlugin)。 在启动时,解析插件.dll的目录,注册所有可用的插件信息。 在运行时,提供了一个GUI,允许用户创建任何插件的实例。 这很好用。 但现在我看到了MEF,并希望我能做同样的事情,但是以更优雅的方式代码化。 我到目前为止用MEF工作的东西 :在启动时我正在导入目录中的所有插件(导出IPlugin)并读出名称,类别,作者等信息……这些信息被编码为导出的元数据属性到插件类。 导入是懒惰的,因此所有插件都不会在启动时实例化,这很重要。 问题是,现在我没有看到在运行时优雅地实例化所选插件的方法,因为插件构造函数是一个导入构造函数,它正在导入对IPluginHost的引用(它需要立即进行一些初始化)的额外复杂性。 与plugininfo一起,我在启动期间将相应的Export保存在字典中,因此当GUI要求实例化给定特定plugininfo的插件时,我可以访问Export(其中Export.Value是我的实际IPlugin)。 但是从那里我如何创建插件的实例并将其与IPluginHost组合? 我收集我应该编写自己的ExportProvider,只要有人要求它就能为IPluginHost提供服务,但我无法访问程序集或特定插件的类型,这些插件可以让我将它添加到目录中,添加目录和ExportProvider到容器并在该容器上调用.ComposeParts。 我希望我能清楚地解决问题,如果没有,让我尝试一下这个问题的简短版本 :MEF的标准用例是不是一个程序,它在启动时延迟加载插件来解析可用的插件信息然后在运行时创建给定特定plugininfos的特定实例? 获得所涉及步骤的代码行是很好的。

插件架构中的reflection与属性

我正在开发一个从子目录启动时加载插件的应用程序,目前我通过使用reflection来迭代每个程序集的类型并查找实现IPluginModule接口的公共类。 由于Reflection涉及性能损失,并且我希望在一段时间后会有几个插件,我想知道在程序集级别定义应用的自定义属性是否有用,可以在迭代类型之前进行检查(可能是程序集中的十几种类型,包括IPluginModule的1个实现者。 该属性(如果存在)可以提供返回所需类型或实例的方法,然后迭代类型将只是一个回退机制。 在配置文件中存储类型信息不是一种选择。 这会改善性能,还是与实际从存储加载组件的时间相比无关紧要? 此外,这种用法是否适用于属性?

Visual Studio将类的所有属性转储到编辑器中

好的,这里有一个为视觉工作室提供了许多方便的小插件的人,或者可以帮助按键序列。 假设我有一个Person类: class Person { string Name { get; set; } int Age { get; set; } } 而且我正忙着快​​乐地编码。 我经常会遇到需要为该类的所有属性赋值的情况,或者将属性的所有值分配给其他属性。 public override void CopyTo(Person myPerson) { myPerson.Name = “XXX”; myPerson.Age = 11; } 我想生成这个部分: myPerson.Name myPerson.Age 即只需将myPerson的所有属性转储到一个小列表中。 在Visual Studio编辑器中。 我安装了resharper,我快速浏览了一个专门做这个的实用程序,但我找不到一个。 有人可以帮忙吗?

从CodeRush扩展获取项目及其包中的所有类

我花了一些时间试图找到CodeRush可以添加的方式,当它找到未声明的元素,在事实类名称中没有使用添加。 在我的问题 ( Refactor_resolve )的答案中建议的解决方案不起作用(故障?)。 在一个过程中,我发现为CodeRush编写插件很容易,所以我决定自己编写这个function(并分享它)。 我只实现了一个CodeProvider (就像在本教程中一样 )。 唯一认为我需要做的工作就是回答这个问题: 在我的插件启动时,我需要获得所有类及其包的列表(设置,映射,等等)。 这意味着项目中以及所有引用的库中的所有类(接口…)及其包。 而且我还需要接收更新(当用户添加引用时,创建新类)。 我可以从一些CodeRush类或CodeProvider类提供的VS接口中获取此信息吗? 如何将创建的CodeProvider添加到用户将鼠标hover在问题上时显示的弹出窗口中?

Visual Studio 2008中的“if语句”之类的垂直行?

是否有一个加载项或设置可以添加垂直行来链接Visual Studio 2008中的“if语句”之类的东西? alt text http://sofzh.miximages.com/c%23/i4jyqe.png 谢谢

.net中的插件架构:卸载

我需要在c#/ .net中实现一个插件架构才能加载 自定义用户定义的操作 数据类型处理自定义数据网格/转换/ …的代码 来自非静态链接的程序集文件。 因为应用程序必须处理许多自定义用户定义的操作,所以Iam需要在执行后卸载它们以减少内存使用。 我发现了几篇关于插件架构的好文章,例如: ExtensionManager PluginArchitecture … 但他们都没有给我足够的香肠来正确地卸下组件。 由于要分发程序并且用户定义的操作(如名称所示)用户定义:如何防止程序集执行恶意代码(例如,关闭我的程序,删除文件)? 你们其中一个人遇到过其他陷阱吗?