问题标签 [delegation]

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 投票
0 回答
275 浏览

wcf - 没有 Kerberos 的 WCF 自定义委派/身份验证

我正在使用 NTLM 安全性构建一个简单的 WCF 服务,可能通过 HTTPS 公开。由于并非所有用户都能够直接使用该服务,因此我们正在为该服务编写一个简单的 Web 前端。用户将使用 HTML 对 Web 前端进行身份验证。

我们想要的是一种将网站用户一直委托给 WCF 服务的方法。我知道 Kerberos 委托可以做到这一点,但我们无法做到这一点。

我想要做的是将Web前端帐户设置为一个特别受信任的帐户,这样如果请求命中认证为“DOMAIN\WebApp”的WCF服务,我们会读取包含真实身份的WCF消息头,然后切换主体到那个并继续正常。

有没有“简单”的方法来实现这一目标?我应该完全放弃这个想法,而是让用户“登录”到 WCF 应用程序,然后完成自定义身份验证吗?

WCF 的可扩展性和安全性选项似乎如此庞大,我想知道从哪条路径开始向下走。

编辑:可以肯定的是,我只希望 WindowsIdentity 进行组成员身份检查。我不需要完整的模拟令牌,只需要一个身份令牌。

0 投票
1 回答
416 浏览

javascript - innerHTML 和事件委托

我有一个包含多个 div 的 div,其中使用 innerHTML 每 25 毫秒更新一次(出于性能原因)。我曾尝试使用事件委托来捕获事件,但我似乎没有做任何事情来捕获点击事件。我认为这可能是由于内容更新的速度。任何想法都会非常受欢迎。

我的代码:

0 投票
3 回答
429 浏览

c++ - 委派到私人领域

有时,C++ 的隐私概念让我感到困惑 :-)

既然Foo::Bar是,private我不能申报b。但是我可以很好main地调用方法。Foo::Bar为什么这是允许的?这是意外还是设计使然?


哦,等等,它变得更好了:

即使我不允许命名类型Foo::Bar,它也适用于auto...


诺亚写道:

在类定义中定义的类型名称不能在没有限定的情况下在其类之外使用。

只是为了好玩,以下是从外部获取类型的方法:

0 投票
1 回答
636 浏览

c# - 帮助 c# 事件监听和用户控件

好的,所以我有一个页面上有一个列表视图。列表视图的项目模板内部是一个用户控件。此用户控件正在尝试触发一个事件,以便托管页面可以收听它。我的问题是事件没有被触发,因为处理程序为空。(即 EditDateRateSelected 是我的处理程序,调试时它为空)

在我的 listvew 的项目数据绑定上是我添加事件处理程序的地方

如果控件在页面内并且在页面加载时我有以下行,我的事件代码一切正常:

但显然我需要监听 listviewcontrols 中的事件。

任何建议将不胜感激。我已经尝试将我的列表视图的 EnableViewState 设置为 true,但这并没有什么不同。我应该在其他地方连接控制处理程序吗?

注意 - 抱歉,如果我的术语有误,我将代表称为处理程序等:)

0 投票
1 回答
1194 浏览

ios - UIView layoutSubviews 委托

我发现自己想要支持将 layoutSubviews 的责任委派给 UIView。这是为了避免为了实现 layoutSubviews 方法而必须创建一个特定的子类。我怀疑我发现自己想要这个替代方案的原因可能是因为我错过了一些基本的 UIKit 设计注意事项,或者?还是我应该继续制作我自己的 UIView 子类,支持这种类型的布局委托?

0 投票
1 回答
5742 浏览

c++ - C++ 问题:类似于 Obj-C 协议的特性?

我习惯在我的代码中使用 Objective-C 协议;他们在很多事情上都令人难以置信。但是,在 C++ 中,我不确定如何完成同样的事情。这是一个例子:

  1. 表格视图,它有一个函数 setDelegate(Protocol *delegate)
  2. 类 Class 的代表,但实现协议“协议”
  3. Class2 的代表,也实现了“协议”
  4. setDelegate(objOfClass) 和 setDelegate(objOfClass2) 都有效

在 Obj-C 中这很简单,但我不知道如何在 C++ 中做到这一点。甚至可能吗?

0 投票
1 回答
1891 浏览

javascript - 如何在不阻止 jQuery 的默认设置的情况下阻止父级上的委托处理程序?

有什么方法可以防止点击<a>触发其父级上的委托点击处理程序,同时允许 的<a>默认行为发生(导航到href)。

这是一个说明我要问的例子。

还有我的 JavaScript:

在这种情况下,当我单击链接时,我希望导航到 google.com,但alert("failure")在我离开的路上一定不能看到。

解决方案有一些限制:

  1. 所有的事件处理程序都必须被委派出去$(".top"),因为我可能在页面中有数千个这样的处理程序。
  2. 导航必须使用浏览器默认行为完成,而不是window.location = $(this).attr("href")或类似

使用正常的事件绑定,我可以e.stopPropagation()<a>. jQuery 提供了另一种方法,称为.stopImmediatePropagation()描述我想要的内容(阻止当前元素上的其他处理程序,在这种情况下是包含委托处理程序的元素),但在这种情况下实际上并没有完成它。这可能是一个错误.delegate(),我不确定。

false从的 click 处理程序返回<a>将阻止其他处理程序运行,但也会执行 a .preventDefault(),因此浏览器将无法导航。基本上,我想知道return false;e.stopImmediatePropagation(); e.preventDefault();不是什么。根据文档,它们应该是等效的。

对于上述代码的现场演示,这里是一个 JSFiddle:https ://jsfiddle.net/CHn8x/

0 投票
1 回答
825 浏览

iphone - 使用 NSXMLParser (iPhone dev) 解析 XML 时的代码重用

在我正在构建的 iphone 应用程序中,当用户加载多个视图控制器时,我正在解析 XML。

每次我这样做时,我都在做以下事情:

  • 建立一个 NSURLConnection(在 viewDidLoad 中)
  • 存储检索到的数据和错误处理(连接委托方法)
  • 创建一个 NSXMLParser
  • 解析 XML(NSXMLParser 委托方法)

我很想知道你解决这个问题的方法是什么?

我自己打算编写一个简单的id子类,其中包含一些对象方法以及其中包含的所有 NSURLConnection 和 NSXMLParser 委托方法——因此责任在于这个子类,并且可以简单地在视图控制器中实例化。这是可行的,还是委托人应该是我的视图控制器?

谢谢

0 投票
2 回答
8083 浏览

delphi - Delphi:如何将接口实现委托给子对象?

我有一个对象,它将一个特别复杂的接口的实现委托给一个子对象。这正是我认为的工作TAggregatedObject。“”对象维护对其“控制器”的弱引用,所有QueryInterface请求都传回父对象。这维护了IUnknown 始终是同一个对象的规则。

所以,我的父(即“控制器”)对象声明它实现了IStream接口:

注意:这是一个假设的例子。我选择这个词Robot 是因为它听起来很复杂,而且这个词只有 5 个字母长——它很短。我也选择了IStream它,因为它很短。我打算使用 IPersistFileor IPersistFileInit,但它们更长,并且使示例代码更难实现。换句话说:这是一个假设的例子。

现在我有我的子对象将实现IStream

剩下的一切,这就是我的问题开始的地方:在RobotStream被要求时创建:

此代码无法编译,并出现错误Operator not applicable to this operand type.

这是因为 delphi 试图as IStream在一个没有实现的对象上执行IUnknown

IUnknown方法可能存在,但该对象并未宣传它支持IUnknown. 没有IUnknown接口,Delphi 不能调用QueryInterface来执行转换。

所以我改变了我的TRobotStream类来宣传它实现了缺失的接口(它确实做到了;它从它的祖先那里继承了它):

现在它可以编译了,但是在运行时就崩溃了:

现在我可以看到发生了什么,但我无法解释为什么。DelphiIntfClear在我的父Robot对象上调用子对象的构造函数。

我不知道防止这种情况的正确方法。我可以尝试强制演员:

并希望保持参考。事实证明,它确实保留了引用 - 在构造函数中没有崩溃。

注意:这让我很困惑。因为我正在传递一个需要接口的对象。我会假设编译器正在隐式执行类型转换,即:

Result := TRobotStream.Create(Self 作为我未知);

为了满足调用。语法检查器没有抱怨的事实让我假设一切都是正确的。


但崩溃还没有结束。我已将行更改为:

并且代码确实从构造函数返回而TRobotStream不会破坏我的父对象,但是现在我得到了堆栈溢出。

原因是将所有(即类型转换)TAggregatedObject推迟到父对象。QueryInterface就我而言,我正在将 a 投射TRobotStreamIStream.

当我在末尾询问TRobotStream它时:IStream

它转身向其控制器询问IStream接口,这会触发对以下内容的调用:

它转身并调用:

繁荣! 堆栈溢出。


盲目地,我尝试删除最终转换为IStream,让 Delphi 尝试将对象隐式转换为接口(我刚刚在上面看到它不能正常工作):

现在没有崩溃;我不太明白这一点。我已经构建了一个对象,一个支持多个接口的对象。现在 Delphi 知道如何转换接口?它是否执行正确的引用计数?我在上面看到它没有。是否有一个微妙的错误等待客户崩溃?

所以我有四种可能的方式来拨打我的一条线。其中哪一个是有效的?

  1. Result := TRobotStream.Create(Self);
  2. Result := TRobotStream.Create(Self as IUnknown);
  3. Result := TRobotStream.Create(Self) as IStream;
  4. Result := TRobotStream.Create(Self as IUnknown) as IStream;

真正的问题

我遇到了很多微妙的错误,并且难以理解编译器的复杂性。这让我相信我所做的一切都是完全错误的。如果需要,请忽略我所说的一切,并帮助我回答问题:

将接口实现委托给子对象的正确方法是什么?

也许我应该使用TContainedObject而不是TAggregatedObject. 也许两者协同工作,父母应该在哪里,TAggregatedObject孩子在哪里TContainedObject。也许情况正好相反。也许在这种情况下都不适用。

注意:我帖子主要部分的所有内容都可以忽略。这只是为了表明我已经考虑过了。有些人会争辩说,通过包含我尝试过的内容,我已经毒化了可能的答案;人们可能会关注我失败的问题,而不是回答我的问题。

真正的目标是将接口实现委托给子对象。这个问题包含我在解决问题的详细尝试 TAggregatedObject。您甚至看不到我的其他两种解决方案模式。其中之一受到循环引用计数的影响,并且违反了 IUnknown等价规则。

Rob Kennedy 可能还记得;并要求我提出一个问题,要求解决问题,而不是在我的一个解决方案中解决问题。

编辑:语法化

编辑2:没有机器人控制器之类的东西。嗯,有 - 我一直在使用 Funuc RJ2 控制器。但不是在这个例子中!

编辑 3*

这里的问题是“父”TRobot对象在调用期间被破坏:

0 投票
1 回答
565 浏览

httpwebrequest - 如何确保我们的网站通过 kerberos 进行身份验证

我正在 dotnet 中使用 HttpWebRequest。我正在使用委托(模拟)来执行此操作,request.Credentials = CredentialCache.DefaultCredentials;
request.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;

在 webconfig 文件中

身份模拟=“真”

对于模拟 Kerberos 是必需的...所以我需要确保该站点是否使用 kerberos 或 NTLM 进行身份验证,因为我的代码会引发 401 未经授权的错误

所以请帮帮我!!!!!!!!!!!!!!!!!!