问题标签 [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.
c# - Activator.CreateInstance 抛出异常“系统找不到指定的文件。”
我已经复制了用于在解决方案中创建类似程序集的程序集的代码。GUTS 不同,但外壳保持不变。
这些程序集在客户端的项目中使用,它们是附加组件,而不是我们核心代码的一部分。现在我已经完成了程序集并不想像它应该的那样加载。
加载程序集的代码是
我在 CreateInstance 部分遇到异常。
有趣的是,当我使用
加载程序集并获取类型,然后 CreateInstance 它工作。
为什么需要 Unwrap?两种不同的加载方式有区别吗?为什么第一个不起作用?
谢谢
Ĵ
java - 如何从旧实例创建新实例?
我有一种情况,我需要从该类的另一个实例创建一个类的新实例。它必须是一个新实例,而不是对旧实例的引用,因为新实例需要在不影响旧实例的情况下进行操作。
我得出的结论是,我的类中必须有一个构造函数,并且该类中使用的每种类型的每个类中都必须有一个构造函数,它将自己的类型作为参数,并从该参数创建新类型:
这在 C++ 中会容易得多,我可以简单地说 newInstance = oldInstance。但是在 Java 中,从旧实例创建新实例的最佳实践是什么?这是我必须做的吗?在 Java 中,在每个类中都有这些类型的构造函数是最佳实践吗?还是有更好的方法来解决这个问题?
c# - Add items to a list of objects, where the list itself is of type T
Is it possible to let "T" be a List? I mean, it is possible (it compiles), but how do you add an object to these kind of lists?
c# - Activator.CreateInstance 和 Activator.CreateInstance 之间的区别
编写以下代码时,它们有什么区别:
我预计后者会快得多,因为实际类型在编译时已经知道,但我没有得到任何差异。在我的机器上,两者都在大约 9 秒内工作。那么考虑到内部使用的步骤,它们有什么区别呢?
c# - C# 程序集在子域中创建实例
我正在尝试创建一个插件框架并通过 C# 中的反射加载依赖项。我目前的实现如下:
我有一个创建新应用程序域的 Windows 服务。然后它获取 PluginProxy 并调用 LoadDependencies 和 ProcessProxy。请注意,我正在尝试将依赖项加载到子域中。
问题在于 zGetTypes 方法。该方法能够找到 IPlugin 类型(智能感知显示它)。但是,即使调用 Activator.CreateInstance,类型也不会被初始化(null)。
请注意,如果我在子域中,zGetTypes 无法创建 IPlugin 类型的实例。
程序集程序集 = pluginDomain.Load(AssemblyName.GetAssemblyName(file.FullName));
如果我不创建单独的 appdomain 并且只是将程序集加载到主 appdomain 中,则可以创建实例。在我的例子中,Service 的 appdomain 创建了子 appdomain。我想将加载插件程序集的责任推给代理。代理从 MarshalByRefObject 派生,因此我可以创建一个实例并从 Windows 服务端解包它。
然后,该服务将插件的加载和生命周期管理委托给代理。代理将通过 LoadDependencies 的方法参数获取子 appdomain 的上下文。
任何想法为什么不创建 IPlugin 的实例?
c# - 如何将使用 Activator.CreateInstance 创建的对象句柄解包到基类?
在我之前的问题中,我想强制所有派生类实现自己的选项类。给定的答案为我的问题提供了解决方案,但随后又产生了另一个问题,因为我无法再打开对象句柄了。
我创建了一个空的公共接口和一个实现它的类:
然后我创建了一个带有抽象参数的基类,TaskOptions
它是 IOptions 类型:
最后,我创建了一堆扩展 Task 类的类,即:
主程序初始化一个 Job 对象,该对象接受一个文件,该文件具有定义 id、name 等的 json 表示法以及任务。
最后,这里是工作类:
在我更改 Task 类以实现 IOptions 接口之前,我将其解包为:
这有效,但在添加IOptions
并投射到Task<IOptions>
它之后会引发 System.InvalidCastException 错误,因为 taskobj 是 TaskSearch(不是 Task)。
如果我手动输入Task<SearchOptions>
,那么它会展开,但最后会抱怨Tasks列表,因为它现在不是Task<IOptions>
. 我需要使Tasks列表通用,以便它接受所有派生类,并找到一种在解包 taskobj 之前获取类型参数的方法,或者从包含当前任务名称的taskclass字符串中获取它。
如果必须,我将为选项创建一个字典,但这就是我想要实现它的方式,我想知道是否可以。
谢谢
c# - 使用 CreateInstance() 遇到“找不到类型”错误
我正在尝试.CreateInstance()
在 C# 项目中的连接实用程序中使用,同时序列化 XML。.Unwrap()
用于解开可序列化的返回类型并获取我正在尝试创建的类型的实例。
我的程序集RPM_Model
在@"D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model"
加载时很好,但由于类型的原因ARC_LOGONRS
,responseName
我收到以下错误:
ConnectUtil.Execute 方法出错:无法
ARC_LOGONRS
从程序集中加载类型RPM_Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
。
现在,这就是我陷入错误的原因:
1.我确实引用了错误中指定的程序集。
2.我的 GAC中没有任何内容覆盖我/Debug
文件夹中的 .dll。
3.我已确保我拥有正确版本的 .dll。
4. .dll 没有其他依赖项。
5.我的项目和.dll都有相同的目标平台。
6.我知道我正确地引用了程序集,就好像我将ARCLOGON_RS
代码放入我的代码并将鼠标悬停在它上面我看到了
类 RPM.Model.Data.ARCLOGON_RS
我可以f12
专注于它来查看它的属性。
7.我已经清理并重建了这两种解决方案。
8.该类型确实有一个公共的默认构造函数,并且该类是公共的。
9. .dll在参考节点中。
10.我确实将正确的程序集名称作为参数传递。
我的问题是,是否有人对为什么我的项目可能会抛出此错误以及如何修复它有任何其他想法,因为我已经完全用完了诊断。
非常感谢您的帮助。
c# - 使用 Activator.CreateInstance 后转换为正确的类型
在使用仅返回对象类型的 Activator.CreateInstance(...) 后,我遇到了转换为正确类型的问题。所以我的代码如下。我有一个空接口来将对象定义为命令..
我有一个实现该接口的命令
我有一个命令验证器接口,它有一个方法 Validate() 并且有一个类型参数,它是一个必须是类并实现 ICommand 接口的对象。
我有一个实现 IValidationHandler 的命令验证器类
我有一个命令总线,它在构建时扫描程序集以查找作为处理程序类型的所有类,并将这些类型注册为命令处理程序或验证处理程序在两个字典之一中,其中键是命令类型,值是处理程序类型。
我遇到的问题出在 Validate() 方法中,尽管我可以创建命令验证器的实例并且它显示(悬停在变量上)它是正确的类型(即 CompanyAddValidator 的实例)我无法调用 Validate()方法,因为它是一个对象。如果我尝试将此处理程序转换为 IValidationHandler < TCommand > 或 IValidationHandler < ICommand >(即 handlerB 和 handlerC),那么我可以在接口上调用“Validate()”方法,我得到一个空引用。
我无法获得正确的语法来允许我需要的通用级别并且能够在实例化的 CompanyAddValidator 对象或我可能拥有的任何其他域实体验证器上调用 Validate() 方法。
任何人都可以指出我正确的方向吗?我试图遵循这些示例,但没有运气。
c# - GetMethod 当参数来自引用时
我正在使用反射创建对象的实例并获取对象类中的方法,但是当我必须使用类型数组Type
来避免歧义问题时,问题就来了,这是我的代码示例'我试图达到。
此代码来自外部程序集(file.dll),我正在使用下一个代码。
要获取MethodInfo
使用 3 个参数的对象,但变量“inf”为空,我认为是因为它没有找到使用“ref”的参数的方法。
有没有办法解决这个问题?
c# - 如果您只有类型和值的字符串表示,您如何实例化已经设置为特定值的类型的实例?
我有以下四个字符串;两对,每对都有一个表示值及其数据类型的字符串。
我知道我可以像这样得到每个类型的...
...我可以像这样激活所述类型的新实例...
...但我不确定如何创建设置为其字符串表示形式stringValueOfA
和stringValueOfB
.
无论解决方案如何,如果可能的话,我也想避免拳击。我不这么认为,但我希望我错了。