草庐IT

Unity—委托

全部标签

c# - Windows 服务上的 Unity DI,可能吗?

我正在开发一个Windows服务来做一些周期性的操作,我可以使用Unity从那里的另一个库中注入(inject)我的类吗?我想在我的服务上使用[Dependency]属性,在Windows服务启动的入口点注册组件。例子:staticclassProgram{staticvoidMain(){ServiceBase[]ServicesToRun;UnityConfig.RegisterComponents();ServicesToRun=newServiceBase[]{newEventChecker()};ServiceBase.Run(ServicesToRun);}}publics

c# - 将通用 Action<T> 委托(delegate)添加到列表

是否可以将通用委托(delegate)操作添加到列表集合中?我需要某种用于Silverlight应用程序的简单消息传递系统。更新以下是我真正“想要”的classSomeClass{publicTData{get;set;}//andmore....}classApp{List>>_actions=newList>>();voidAdd(Action>foo){_actions.Add(foo);}}编译器:Thetypeornamespacename'T'couldnotbefound(areyoumissingausingdirectiveoranassemblyreference?

c# - 数组中的任务——只有最后一个运行

我正在试验任务。为什么这个输出10而不是循环的每个值?publicstaticvoidStartTasks(){Task[]tasks=newTask[10];for(inti=0;iConsole.WriteLine(i));foreach(Tasktaskintasks){task.Start();}} 最佳答案 C#lambda捕获对变量的引用,而不是变量的值。如果您想捕获该值,您需要先在循环内复制它,这会导致捕获获取对局部作用域不变变量的引用。publicstaticvoidStartTasks(){Task[]tasks=

c# - Unity3D UI,计算拖动项目的位置?

如今,在Unity中拖动UI元素非常容易:制作一些UI项目。添加组件->事件->事件触发器。放在下面的脚本上。单击以添加四个明显的触发器。大功告成。但是。我完全迷失在指针坐标和UI坐标之间的关系(如RectTransform等中所见)。在下面的DragIt中:如何在手指下正确移动UI面板?假设您有一个大面板,面板中有十个UIButton,按钮上有Dragster。RectTransform坐标和鼠标指针有什么关系...简而言之,如何在下面的DragIt()中移动其中一个按钮?/*modernUnitydragofUIelement*/usingUnityEngine;usingUnit

c# - Func 委托(delegate)与函数

谁能告诉我使用委托(delegate)而不是调用函数本身的优势,如下所示(或者换句话说,为什么选择选项A而不是选项B)?昨晚我在看某人的linq代码,他们有类似于选项A的东西,但它被用来返回编译的linq查询。我意识到前者现在可以传递给其他功能..只是不确定它的实用性。顺便说一句,我意识到这不会按原样编译。在发布之前取消注释其中一个函数。蒂亚classProgram{staticvoidMain(string[]args){Console.WriteLine(SayTwoWords("Hello","World"));Console.ReadKey();}//OptionAprivat

c# - 匿名委托(delegate)中捕获的私有(private)字段

classA{publiceventEventHandlerAEvent;}classB{privateA_foo;privateint_bar;publicvoidAttachToAEvent(){_foo.AEvent+=delegate(){...UseBar(_bar);...}}}由于delegate捕获变量this._bar,它是否隐含地持有B的实例?B的实例是否会通过事件处理程序引用并由A的实例捕获变量?如果_bar是AttachToAEvent方法的局部变量,会有不同吗?因为在我的例子中,A的实例比B的实例生命周期长得多并且小得多,我担心会导致“内存泄漏”这样做。

c# - 帮助理解 .NET 委托(delegate)、事件和事件处理程序

这个问题在这里已经有了答案:Whydoestryingtounderstanddelegatesfeelliketryingtounderstandthenatureoftheuniverse?(6个答案)关闭3年前。在过去的几天里,我问了几个关于委托(delegate)的问题HERE和HERE.我承认......我真的不明白委托(delegate)。我真的真的真的很想理解和掌握它们。(我可以定义它们——类型安全的函数指针——但由于我对C类型语言的经验很少,所以它并不是很有帮助。)任何人都可以推荐一些在线资源来以一种不假设的方式解释委托(delegate)吗?这是我怀疑VB实际上妨碍了

c# - 如何将委托(delegate)存储在列表中

如何将委托(delegate)(命名的、匿名的、lambda)存储在通用列表中?基本上我正在尝试构建一个委托(delegate)字典,从中我可以使用键访问存储的委托(delegate)并执行它并按需返回值。可以在C#4中执行吗?有什么想法可以实现吗?注意:异构列表更适合我可以存储任何类型的委托(delegate)的地方。 最佳答案 是否System.Collections.Generic.Dictionary还不够吗? 关于c#-如何将委托(delegate)存储在列表中,我们在Stac

c# - 为同一个匿名方法创建两个委托(delegate)实例不相等

考虑以下示例代码:staticvoidMain(string[]args){boolsame=CreateDelegate(1)==CreateDelegate(1);}privatestaticActionCreateDelegate(intx){returndelegate{intz=x;};}您会想象这两个委托(delegate)实例比较起来是相等的,就像它们在使用良好的旧命名方法方法(newAction(MyMethod))时一样。它们比较起来并不相等,因为.NETFramework为每个委托(delegate)实例提供了一个隐藏的闭包实例。由于这两个委托(delegate)实

c# - 我可以颠倒多播委托(delegate)事件的顺序吗?

当您在.NET中订阅事件时,订阅会添加到多播委托(delegate)中。当事件被触发时,委托(delegate)将按照它们被订阅的顺序被调用。我想以某种方式覆盖订阅,以便订阅实际上以反向顺序触发。这可以做到吗?如何做到?我想这样的东西可能是我需要的?:publiceventMyReversedEvent{add{/*magic!*/}remove{/*magic!*/}} 最佳答案 你不需要任何魔法;你只需要反转加法即可。编写delegate1+delegate2会返回一个新委托(delegate),其中包含delegate1中的方