问题标签 [proxy-classes]

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 投票
1 回答
705 浏览

visual-studio - 如何阻止 Visual Studio 生成的 Web 服务代理类进行编码?

我正在使用 Visual Studio 生成的代理类来访问 Web 服务(将 Web 服务添加为我的项目的 Web 引用)。问题是 Web 服务公开的函数需要一个 CDATA 元素,即:

不幸的是,当我将 "" 传入代理类时,它使用以下命令调用 Web 服务:

这似乎会导致 Web 服务出现问题。有什么办法可以在仍然使用 Visual Studio 生成的代理类的同时解决这个问题?

0 投票
2 回答
1528 浏览

vb.net - .NET webservice 使用参数类型的实例?

我的解决方案中有一个 Windows 窗体项目和一个 Web 服务项目,我正在尝试调用 Web 服务并返回一个客户对象作为结果。问题是当我尝试接收返回对象时,我收到一个无法转换它的错误。例如,这是我的网络服务的签名:

这是我用来调用它的代码:

但我收到此编译时错误(wsDrivers 是我添加到表单项目中的 Web 引用的名称):“ProjectNamespace.Common.wsDrivers.Driver 类型的值无法转换为 ProjectNamespace.Common.Driver”

这个“Common”命名空间包含 Driver 类,我不确定为什么来自 Web 服务的返回类不仅仅是一个通用的“Driver”,而是一个“wsDrivers.Driver”,我无法转换回来了。有人知道我该如何处理这种类型不匹配吗?

编辑:感谢您的解释 - 这实际上清楚地说明了它在做什么。但是,有什么方法可以强制它使用实际类型而不是代理(或者,有什么方法可以在“真实”实例和“代理”实例之间进行转换),还是我必须在我通过网络发送它们之前序列化属性,然后手动反序列化返回值?

0 投票
3 回答
4510 浏览

.net - 强制 .NET webservice 使用本地对象类,而不是代理类

我有一个从 Windows 窗体应用程序(都是 .NET,都在同一个解决方案中)调用的 Web 服务,并且我希望我的 Web 服务从项目的​​其他地方返回一个自定义对象 - 这是他们的常见对象两者都共享一个引用,因为它在我的解决方案的第三个项目中。当我调用 web 服务时,它返回一个“Person”对象,但它位于 web 服务的命名空间中,并且它是从 web 服务本身生成的代理类创建的。因此,我无法对其进行操作并将其返回到我的程序,该程序需要一个基于类的共享副本的“Person”对象,而不是来自 web 服务命名空间的代理副本,当我尝试时出现错误将其 CType 为正确的类类型。

如何强制 web 服务使用类的本地副本,而不是代理副本?我的问题在这种情况下有意义吗?如果不是,我会澄清它。

值得注意的是——我已经使用 ByRef 传递所有参数,并使用这些返回值来填充我在返回时创建的对象的副本。这不是最好的方法!

0 投票
2 回答
291 浏览

c# - C# 代理和 var 关键字

这个问题与我以前的帖子有关。基本上,我想将 DAO 注入一个实体,即

在这里,如果我的 DAO 中有自定义方法,那么我基本上必须将它们包装在实体对象中。因此,如果我有一个 IUserDAO.Register() 我将不得不创建一个 User.Register() 方法来包装它。

更好的是创建一个代理对象,其中来自 DAO 的方法动态分配给用户对象。所以我可能有这样的东西:

这意味着我可以将 User 实体保持为一个适合通过网络传输数据的非常愚蠢的类,但也可以神奇地给它一堆 DAO 方法。

不过,这远远超出了我的舒适区,我想知道我需要做什么才能做到这一点?我可以使用 Castles 动态代理吗?C# 编译器是否也能够处理这个问题并了解动态添加的方法?

如果这是胡说八道,请随时告诉我。

编辑:

我们需要做的是在编译时以某种方式将 DAOProxyService.Create() 声明为返回一个 User 对象。这可以通过泛型来完成。

这不完全正确,我想要返回的不是 User 对象,而是具有动态添加的 UserDAO 方法的 User 对象。由于此类在任何地方都没有定义,因此编译器将不知道该怎么做。

我本质上返回的是一个新对象,它看起来像:用户:IUserDAO,所以我想我可以根据需要进行转换。但这似乎很混乱。

看起来我正在寻找的是类似于这个:Mixins

0 投票
1 回答
2747 浏览

.net - Activator.GetObject - MarshalByRefObject

在 .Net Activator.GetObject(Type type, string url, object data) 中返回对象的代理。我猜这个代理继承自 MarshalByRefObject 并且可以跨 AppDomains 发送。我对吗?

在我的应用程序中,我在 appdomain A 中创建一个对象并使用它 appdomain B。该对象的成员是使用 Activator.GetObject () 创建的代理对象。因此,当我在 AppDomain B 中时,我对在 appdomain A 中创建的对象有一个透明代理。当我尝试对代理对象执行调用该方法时,我遇到了错误。

例如,我在 App Domain B 中创建了一个 Connection 对象。我在 App Domain A 中有 Connection 对象的透明代理。当我尝试从 AppDomain A 进行这样的调用时遇到错误。 ConnectionObject.SecurityProxy.GetSecurityAccount ( )。看起来问题是当我尝试像上面那样拨打电话时,它试图在 AppDomain A 中再次创建 SecurityProxy,而不是将呼叫转发到 AppDomain B。连接时已经在 AppDomain B 中创建了安全代理对象被创建。

你能帮我弄清楚我做错了什么吗?

问候,阿尼尔。

0 投票
2 回答
2828 浏览

c# - 什么是控制反转/面向方面意义上的 .NET 代理对象?

什么是控制反转/面向方面意义上的代理对象?

关于代理对象是什么的任何好文章?
为什么要使用一个?
以及如何用 C# 编写一个?

0 投票
3 回答
3003 浏览

.net - .NET web service without proxy class

I'm trying to create an application that will let me execute a method specified at runtime on an arbitrary webservice (the URL of which I'll also provide at runtime). I've figured out how to use Type.InvokeMember to execute the arbitrary method, but how do I specify the web service to consume without creating a proxy class.

I found How do I call a webservice without a web reference? which will helps me out if I already have the WSDL and only the URL will change, but I'd like to be able to call any webservice and fetch the result.

Thanks.

0 投票
1 回答
2049 浏览

nhibernate - Nhibernate 中具有复合 ID 的意外代理对象

我有一个使用复合 id 的数据结构(我不想将其更改为单个),除了多对一连接之外,一切都加载正常,如果连接为空,而不是将属性映射为 null,而是将其映射为空代理对象。我写了一个丑陋的工作(见吹)。有什么解决办法吗?

私有节点_Parent;

}

以映射文件开头

并通过

0 投票
1 回答
4684 浏览

c# - SoapHttpClientProtocol.Invoke Method .NET Web 服务的异常

我正在从基于 C# 表单的应用程序调用 Web 服务。

我有可能找回异常。例外情况可能是服务根本没有连接,接收失败,但原始消息已发送,或介于两者之间。然后,我需要根据抛出的异常(类型或消息或两者)做出决定,以便接下来执行两个操作之一。

问题是,我对后续操作的选择取决于第一次调用是否在失败之前到达服务器。我怎样才能找到所有可能抛出的异常的列表,以及它们可能意味着什么,因为这是框架中的所有代码。我查看了 MSDN 文档,发现 SoapHttpClientProtocol.Invoke 可以抛出 SoapException,但是该方法调用的方法会引发 System.Net.WebExceptions。所以我需要一个整个调用堆栈的列表,它可以抛出什么,以及这意味着什么。

有任何想法吗?

更新 1

达林,你的回答或多或少地证实了我的怀疑,即我想要的东西并没有真正的意义。我选择先做更多的侦探工作,然后用它来决定下一步做什么。不幸的是,在这种情况下,由于我们正在处理信用卡,所以到底发生了什么以及我们是否发送数据真的很重要。

0 投票
4 回答
2969 浏览

java - 在 Java 中,如何在更改属性时调用方法的对象周围构造一个“代理包装器”?

我正在寻找类似于Proxy 模式Dynamic Proxy Classes的东西,只是我不想在真实对象上调用方法调用之前拦截它们,而是我想拦截正在更改的属性. 我希望代理能够表示具有不同属性集的多个对象。Action Script 3 中的 Proxy 类之类的就可以了。

这是我一般想要实现的目标:

我有一个线程运行一个对象,该对象管理由程序中的其他线程移交的值列表(数字、字符串、对象),因此该类可以负责在磁盘上创建定期持久快照以进行检查点应用程序。这个持久化对象管理一个“脏”标志,表示自上一个检查点以来值列表是否已更改,并且在忙于将其写入磁盘时需要锁定该列表。

持久化器和其他组件通过通用名称识别特定项目,因此当从崩溃中恢复时,其他组件可以首先检查持久化器是否保存了最新的副本,并从中断的地方继续工作。

在正常操作期间,为了使用他们移交给持久化器的对象,我希望他们接收对代理对象的引用,该引用看起来好像是原始对象,但是每当他们更改其上的某些值时,持久化器通知并相应地采取行动,例如在实际设置实际值之前将项目或列表标记为脏。


编辑:或者,Java中是否有通用设置器(如PHP 5),即如果属性不存在则调用的方法?或者是否有一种对象可以在运行时添加属性?