草庐IT

构造器

全部标签

c# - 在其自己的构造函数中将 "this"作为参数传递是一种不好的做法吗?

我有这个BdlTabItem它接收类型为DockableUserControl的参数并想知道使用uc.TabItem=this在两者之间创建循环引用是否是一种不好的做法和newBdlDockableWindow(this)在构造函数完成之前。我知道这种行为对于非托管native代码(C++)来说非常糟糕。因此,即使我没有收到任何警告或错误,我也会在这里询问我是否应该这样做。publicBdlTabItem(BdlTabControlparent,DockableUserControluc,stringtitle){TabControlParent=parent;UserControl=

c# - 重写 ASP.NET 代码隐藏文件中的 Page 类构造函数——何时调用?

如果我覆盖System.Web.UI.Page构造函数,如图所示,DoSomething()在页面生命周期方面何时被调用?我似乎无法在任何地方找到这个记录。namespaceNameSpace1{publicpartialclassMyClass:System.Web.UI.Page{publicMyClass(){DoSomething();}protectedvoidPage_Load(objectsender,EventArgse){}}}作为引用,这里是ASP.NET页面生命周期概述:http://msdn.microsoft.com/en-us/library/ms17847

c# - 为什么不在用作泛型类型参数的类上调用静态构造函数?

给定以下类:publicclassFoo{staticFoo(){Console.WriteLine("Fooisbeingconstructed");}}publicclassBar{publicvoidReferenceFooAsGenericTypeParameter(){Console.WriteLine("Fooisbeingreferencedasagenerictypeparameter");}}publicclassSampleClass{publicstaticvoidMain(){newBar().ReferenceFooAsGenericTypeParameter

c# - 类型初始化器(静态构造器)异常处理

我正在用C#编写WCF服务。最初我的实现有一个静态构造函数来做一些一次性初始化,但是一些正在进行的初始化可能(暂时)失败。似乎静态构造函数只被调用一次,即使第一次(失败的)尝试抛出异常?任何后续实例化我的类的尝试都将立即失败并返回TypeInitializationException,而代码并未实际执行。C#语言规范声明静态构造函数最多调用一次,但基本上这会产生一个异常,即使您捕获到它也无法从中恢复?我是不是漏掉了什么?我想我应该将任何远程危险移动到服务的实例构造函数并手动检查类初始化是否已经成功完成? 最佳答案 所以你可以将关键部

c# - 在 .net 核心中使用构造函数参数进行依赖注入(inject)

我看到很多关于如何在.NETCore中使用DI的代码示例,但是它们都没有使用构造函数参数。例如:创建授权服务在构造函数中注入(inject)当前HTTPheader(X-Api-Key)在实现中检查我是否有权访问在这里,我不仅需要在我的IAuthorizationService上使用DI,还需要在构造函数中注入(inject)token。我知道如何在Ninject中执行此操作,但没有使用.NETCoreDI的经验。这是我的例子。publicvoidConfigureServices(IServiceCollectionservices){services.AddMvc();servic

c# - 为什么不在构造函数中调用可覆盖的方法?

这是一个过于简单的例子,但我有一些现实生活中的代码在概念上做同样的事情(试图验证派生类的值“设置”访问器方法),分析器给我“不要调用可重写的方法build者。”我想弄清楚我是否应该更改我的代码,或者忽略警告。我想不出有什么理由应该注意这个警告。publicabstractclassSimpleUrl{protectedstring_url;publicabstractstringUrl{get;set;}publicSimpleUrl(){}publicSimpleUrl(stringUrl){this.Url=Url;}}publicclassHttpUrl:SimpleUrl{pu

c# - 远离主要构造函数

VisualStudio2013的C#6预览版支持一项主要的构造函数功能,该团队已决定不会将其纳入最终版本。不幸的是,我的团队使用主构造函数实现了200多个类。我们现在正在寻找最直接的途径来迁移我们的源代码。由于这是一次性的事情,神奇的正则表达式替换字符串或hacky解析器会起作用。在我花很多时间写这样一个野兽之前,有没有人已经这样做了或者知道更好的方法? 最佳答案 正如我在评论中建议的那样,您可以使用Roslyn版本,它确实了解主构造函数,将代码解析为语法树,然后修改该语法树以使用“普通”构造函数反而。请注意,您还需要将所有使用主

c# - 属性构造函数的默认值?

我收到这个错误,errorCS0182:Anattributeargumentmustbeaconstantexpression,typeofexpressionorarraycreationexpressionofanattributeparametertype当我尝试写这样的东西时[AttributeUsage(AttributeTargets.Method,AllowMultiple=false)]publicclassUrlAttribute:Attribute{publicUrlAttribute(stringpattern,stringname=null){//...它甚至

c# - IoC - 构造函数将运行时值作为一个参数,将服务作为另一个参数

我有一个WPF应用程序,当它启动时,它会在文件系统中查找一些配置文件对于它找到的每个配置文件,它会在不同的窗口中显示一些信息每个窗口都有一个绑定(bind)到窗口数据上下文的关联ViewModel对象因此为每个配置文件创建一个新的ViewModel。表示配置文件中数据的对象被传递到View模型构造函数但是,View模型还有其他依赖项传递给构造函数代码看起来像这样(在从app.xaml启动的Bootstrap中)foreach(WindowConfigconfiginConfigManager.GetConfigs()){IMyServicesvc=newMyService();//ch

c# - 整个程序集的静态构造函数

我的程序集中有许多入口点,我希望在运行此程序集中的任何其他代码之前,每个AppDomain执行一次一些初始化代码。最好的方法是什么?我看到的一个解决方案是拥有一个带有静态构造函数的类,并继承我从中获得的每个入口点。像这样:publicclassInitializer{staticInitializer(){EnsureInitialized();//Callsinitializationcodeonceandonlyonce}}publicclassEntryPointOne:Initializer,IEntryPoint{//Somecodehere}publicclassEntry