草庐IT

delegating-constructor

全部标签

c# - "T @this"在委托(delegate)声明中是什么意思?

我刚刚使用DustinCampbell'sWeakEventclass向项目添加了一个弱事件实现.虽然盲目地使用我在互联网上找到的代码™通常不是一个好主意,但它比我以前一起破解的要好得多。到目前为止它似乎运行良好,但为了理解代码,我遇到了以下问题:publicclassWeakEventHandler:IWeakEventHandlerwhereT:classwhereE:EventArgs{privatedelegatevoidOpenEventHandler(T@this,objectsender,Ee);...我习惯于仅使用objectsender和EventArgsargs参数

c# - 继承基类时如何避免错误 "Constructor on type ' MyType'not found”

我有一个VisualStudio2010Windows窗体应用程序,其中包含一个其他类将继承的窗体基类。基类的构造函数采用子类将传递给基类的参数。例子:publicpartialclassBaseForm:Form{publicBaseForm(intnumber){InitializeComponent();}}publicpartialclassChildForm:BaseForm{publicChildForm(intnumber):base(number){InitializeComponent();}}我遇到的问题是,当我尝试在VisualStudio的设计View模式下打开

c# - 如何声明带有 out 参数的通用委托(delegate)

这个问题在这里已经有了答案:Funcwithoutparameter(4个答案)关闭8年前。Func,只是不编译,如何声明我希望第二个参数是out一个?我想这样使用它:publicclassFoo(){publicFuncDetectMethod;}

c# - 我可以使用 lambda 语法忽略委托(delegate)参数吗?

我很好奇为什么C#允许我在某些情况下忽略委托(delegate)参数,而在其他情况下不允许。例如,这是允许的:Actionaction=delegate{Console.WriteLine("delegate");};但这不是:Actionaction=()=>Console.WriteLine("lambda");有没有办法使用lambda初始化委托(delegate)并忽略参数?我知道我可以向lambda添加一个参数并修复前一行,但这更多是一个与编译器有关的学术问题,以及它为什么或如何工作。 最佳答案 我相信您的第一个示例实际上

c# - 从 MethodInfo 创建委托(delegate)

我目前在尝试从MethodInfo创建委托(delegate)时遇到问题。我的总体目标是查看类中的方法并为标有特定属性的方法创建委托(delegate)。我正在尝试使用CreateDelegate但出现以下错误。Cannotbindtothetargetmethodbecauseitssignatureorsecuritytransparencyisnotcompatiblewiththatofthedelegatetype.这是我的代码publicclassTestClass{publicdelegatevoidTestDelagate(stringtest);privateList

c# - IoC 工厂 : Pros and contras for Interface versus Delegates

任何需要运行时值来构造特定依赖项的地方,抽象工厂都是解决方案。我的问题是:为什么许多消息来源更喜欢FactoryInterface而不是FactoryDe​​legate来实现这种模式?这两种解决方案的优缺点是什么?下面是一个例子来理解我的意思如果您有一个服务需要一个具有特定上下文的存储库,那么服务构造函数需要一个工厂来创建或访问其存储库。常见的解决方案是像这样创建一个RepositoryFactoryInterface。publicIRepositoryFactory{IRepositoryCreate(ContextInformationcontext);}publicclassM

c# - C# 中的委托(delegate)和 F# 中作为第一类值的函数有什么区别?

更具体地说,委托(delegate)具有哪些特征(如果有)是F#中的第一类值所没有的;作为一流值的函数具有(如果有的话)C#中的委托(delegate)所没有的特征是什么? 最佳答案 委托(delegate)和F#“第一类函数值”有很大不同。委托(delegate)是CLR的一种机制,是函数指针+对象对的类型安全包装器(例如方法,this指针与方法地址一起被捕获)。另一方面,F#函数值是抽象类的实现FSharpFunc(在F#正式发布之前它被称为FastFunc)。调用通过普通的虚拟方法发生,这比委托(delegate)调用快得多。

c# - 我只能用 "as"转换一个逆变委托(delegate)

我正在尝试转换一个逆变委托(delegate),但出于某种原因我只能使用“as”运算符来完成。interfaceMyInterface{}delegatevoidMyFuncType(InTypeinput);classMyClasswhereT:MyInterface{publicvoidcallDelegate(MyFuncTypefunc){MyFuncTypecastFunc1=(MyFuncType)func;//ErrorMyFuncTypecastFunc2=funcasMyFuncType;MyFuncTypecastFunc3=funcisMyFuncType?(My

c# - 向事件添加委托(delegate) - 线程安全

可以同时从多个线程执行以下代码。this._sequencer.Completed+=OnActivityFinished;从多个线程向事件处理程序添加委托(delegate)是否线程安全?从多个线程的事件处理程序中删除委托(delegate)是否线程安全?使该线程安全的最简单且可维护的方法是什么? 最佳答案 如果您不指定自己的事件添加/删除处理程序,C#编译器会生成此添加处理程序(由.NETReflector重构):publicvoidadd_MyEvent(EventHandlervalue){EventHandlerhandl

c# - 有条件属性时创建委托(delegate)

我有一个带有PCLDebug类的可移植类库:publicstaticclassPCLDebug{publicstaticActionLogLine{get;set;}}我想要做的是在外部项目中设置一次,然后能够在PCL中调用LogLine以将内容打印到VS输出窗口。这是我的尝试:MyPCL.PCLDebug.LogLine=System.Diagnostics.Debug.WriteLine;这里的问题是编译器报错,因为System.Diagnostics.Debug.WriteLine有一个Debug的条件属性:Cannotcreatedelegatewith'System.Diag