问题标签 [createinstance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
10546 浏览

c# - 如何将参数传递给通过 Assembly.CreateInstance 加载的 C# 插件?

我现在拥有的(成功加载插件)是这样的:

这仅适用于具有不带参数的构造函数的类。如何将参数传递给构造函数?

0 投票
4 回答
4576 浏览

com - CLSIDFromProgID 成功但 CreateInstace 失败!为什么?

我正在尝试创建一个 COM 对象的实例。我有实现接口的类名,并通过使用 CLSIDFromProgID() 获得 CLSID。因此,由于我获得了 CLSID,我认为从现在开始一切都会好起来的。但是,当我调用 CreateInstance 并传入 CLSID 时,我收到一条错误消息,提示“类未注册”。我也只在某些计算机上收到此错误。它在多台计算机上运行无错误。我不明白问题可能出在哪里。我的注册表脏了吗?有谁知道这里发生了什么?谢谢你的帮助!

我只想补充一点,这是一个 .NET COM 类。相应的条目位于注册表中,DLL 位于 GAC 中。

0 投票
2 回答
265 浏览

c++ - 如何有条件地选择我在 C++ DLL 中通过 COM 调用的 C# 类?

在我的 StackOverFlow 兄弟们的大力帮助下,我设法创建了一个 C++ DLL,它通过 COM 调用我的 C# 类并将数据来回传递给外部应用程序。在该代码开始工作后,王国里有很多庆祝活动。

现在我有一个新问题。我正在扩展 DLL,以便它可以调用不同的类(都实现相同的接口)。我需要根据加载时传递给 DLL 的 char 数组来决定调用哪个类。无论我使用哪个类,我调用的方法都是完全相同的。调用 DLL 时在类之间切换的最佳方法是什么?

这可能是一个相当简单的问题,但我真的不知道任何 C++。让 COM 运行对我来说是一个重大挑战。

编辑:我确定有一些超级优雅的方法可以实现这一点(反思?),但请将您的建议限制在可以轻松实现的东西上......效率在这里并不重要,可维护性也不是真正的问题。

0 投票
3 回答
1508 浏览

c# - 使用 AppDomain 实例化 DLL 中的类

我有一个网站,可以根据用户需求即时编译一个类并将 dll(名为 Equation.dll)存放在网站的子目录中。管理员可以随时重新编译。但是,一旦创建了类的实例,就会显示消息“该进程无法访问该文件,因为它正被另一个进程使用”。

据我了解,解决此问题的唯一方法是从不同的 AppDomain 创建实例。下次管理员需要重新编译时,我需要卸载这个 AppDomain 并且(我认为)一切都会好起来的。(也许我的假设是错误的?)

坦率地说,我无法创建此类的实例来挽救我的生命。诚然,我在这里有点不知所措......所以我在任何事情上都在摇摆不定。此时我的片段是:

“equationcache”文件夹是 dll 被编译到的位置(尽管我为了好玩而尝试将它放在“bin”中,但也没有成功)。调用中的程序集名称似乎是正确的(并且它适用于 appDomain.Load)。调用中的类型名称似乎是正确的。根据日志,会发生以下情况:

我不明白为什么它在“equationcache”目录中寻找不同形式的“Cnn.CostModel”。诚然,调用代码位于 bin 文件夹中的“Cnn.CostModel.dll”中。我需要做什么才能获取“Equation.dll”文件?

还是我完全偏离了这项努力?非常沮丧。任何帮助将不胜感激。

0 投票
2 回答
1254 浏览

c# - 动态定义类型化数据集?

我正在尝试在运行时在我的代码中动态创建类型化数据集的实例。我有可用的类型,但是当我尝试这样做时:

问题是当我尝试运行它时,根据代码,该类型似乎无效。我在这里做错了什么?

0 投票
4 回答
3843 浏览

c# - Activator.CreateInstance(t, 42, args) 找不到构造函数

我在工厂模式样式函数中使用(稍微扩展的版本)以下代码:

p>

但是,它在运行时会抛出一个未找到构造函数的异常,我不知道为什么。

data.Case.ToString() 方法返回一个类的名称 SingleItemNew,该类的构造函数采用单个参数。

有谁知道问题是什么?

干杯,埃德

0 投票
8 回答
24723 浏览

.net - 如何在 Activator.CreateInstance 中传递 ctor args 或使用 IL?

我需要一个性能增强的 Activator.CreateInstance() 并且遇到了 Miron Abramson 的这篇文章,它使用工厂在 IL 中创建实例然后缓存它。(我在下面包含了来自 Miron Abramson 网站的代码,以防它以某种方式消失)。我是 IL Emit 代码和 Activator.CreateInstance() 之外的任何东西的新手,用于实例化一个类,任何帮助都会非常感激。

我的问题是我需要创建一个对象的实例,该实例需要一个带参数的 ctor。我看到有一种方法可以传入参数的类型,但是有没有办法也可以传入 ctor 参数的值?

如果可能的话,我想使用类似于CreateObjectFactory<T>(params object[] constructorParams)我想要实例化的某些对象可能有超过 1 个 ctor 参数的方法。

评论员在他的帖子 2010-01-11 上更新了 Miron 的代码

0 投票
2 回答
7466 浏览

c# - 在另一个 AppDomain 中创建类型的实例

我的场景是我有一个创建 AppDomains 的 .net 应用程序(比如说一个控制台应用程序)。然后,它需要在该 AppDomain 中的类型上创建实例并调用方法。每个 AppDomain 都有一个特定的目录,它的依赖项应该在哪里,它不在控制台应用程序目录下(甚至不靠近)。这是我的简单代码:

对 CreateInstanceFrom 的调用会导致 FileNotFoundExcepotion。FusionLog显示搜索到的目录是Console应用目录。它不包括从 AppDomain 设置的搜索文件夹 - 在“baseDirecory”变量中。

我究竟做错了什么?是否有另一种方法来执行位于另一个 AppDomain 中的代码?

谢谢...

0 投票
2 回答
280 浏览

.net - 即使在winforms,.net中GetCreateInstanceSupported = true,如何将属性标记为ReadOnly

使用 TypeConverter 类的 CreateInstance 方法,可以编辑不可变对象的属性 - 例如字体。

但是,与字体类不同,我的类中有一些属性我希望可以浏览但只读-即使支持 CreateInstance。

是否有支持这一点的属性?

ETA:我已经回答了下面的问题。但是,如果有人有任何想法,仍然有轻微改进的空间。

0 投票
2 回答
1514 浏览

.net - AppDomain.CreateInstance 不遵守规则

根据运行时如何定位程序集,第 2 步是检查以前引用的程序集

但是,在下面的代码中,您可以看到这绝对不会发生。在第一行中,加载了一个程序集(这应该使其成为所有未来调用的“先前引用的程序集”。)

但是,几行之后,当代码调用 AppDomain.CurrentDomain.CreateInstance 时,会触发 AssemblyResolve 事件,表明运行时无法找到请求的程序集。

您可以知道程序集已加载,因为从 AssemblyResolve 事件中我直接从 CurrentDomain.GetAssemblies() 返回程序集!

所以,显而易见的问题是,为什么运行时没有找到引用的程序集,正如“运行时如何定位程序集”的第 2 步所暗示的那样?

为了运行这个示例:创建一个新的控制台应用程序,然后向该解决方案添加一个新的 ClassLibrary,并将其命名为 ClassLibrary1。将以下代码粘贴到控制台应用程序的类程序中:

然后像这样添加使用引用:

请注意,我故意将原始路径留在这里,这样运行时就不会按照步骤 4 找到程序集:通过代码库定位程序集或探测我的场景是我试图故意使用第 2 步中定义的功能. 如果运行时可以通过第 4 步找到路径,那将正常工作。这是第 2 步不起作用。

谢谢。