草庐IT

c# - 在不创建新类的情况下添加更多行为

这是面试中被问到的问题。ThereisaLabelwithapropertyTextInonepagealabelissimpleLabel,inotherpagesitmayhandleanyoneorcombinationofthebelowactionsClickableResizableDraggableHowdoyoudesignthislabelcomponentthatappliesOOPdesignPrinciple&DesignPattern?我说过我会创建以下内容:publicclassLabel{publicstringText{get;set;}}publici

c# - 流利类的通用 'TThis'

我正在构建一个流畅的接口(interface),其中我有一个包含大量流畅逻辑的基类,以及一个添加了一些特殊行为的派生类。我面临的问题是从派生类型的实例调用时基类中流畅方法的返回类型。调用基类的方法后,只有基类的方法可以继续流畅调用。改变调用方法的顺序将有助于它的编译,但它会降低它的可读性,这是流畅接口(interface)的要点。有没有办法为基类定义某种“This”类型,以便所有方法返回相同的类型。例子publicclassField{publicFieldName(stringname){_name=name;returnthis;}}publicSpecialField:Field

c# - 基 Controller 类的属性注入(inject)

我正在尝试在派生self的BaseController类的任何Controller上自动设置一个属性。这是我的Application_Start方法中的代码。UnitOfWork属性在我尝试访问它时始终为null。varbuilder=newContainerBuilder();builder.RegisterControllers(typeof(MvcApplication).Assembly);builder.RegisterType().As();builder.RegisterType().As();builder.RegisterType().OnActivated(c=>c

c# - 用于创建带有命名空间声明的新 C# 类的 VSCODE 片段

目前我们只能创建新的文件或文件夹。而且每次创建类声明都要写命名空间,非常烦人。但是是否可以创建新的C#类文件并在其中自动生成适当的命名空间?或者那里有一些片段? 最佳答案 Thisextension提供一个上下文菜单按钮来添加一个新类,该类将自动填充命名空间。自上次回答以来,VisualStudioCode发生了一些变化。它现在在片段中提供变量TM_DIRECTORY,但这是一个绝对路径。我已经提交了anenhancementrequest提供可以转换为命名空间的相对路径。但老实说,我认为上面的扩展满足了我的需求(上下文菜单是一个加

c# - 哪个是 delphi "class of "(类的类型)的 C# 声明?

在delphi中,我可以像这样声明一个类型的类typeTFooClass=classofTFoo;TFoo=classend;此声明的C#等效项是什么? 最佳答案 您在C#中可以获得的最接近的是Type类型,它包含有关类型的元数据。publicclassA{}publicstaticintMain(string[]args){Typeb=typeof(A);}这不是完全相同的。在Delphi中,“其他类型的类型”本身就是可以分配给变量的类型。在C#中,“其他类型的类型”是一个System.Type实例,可以分配给System.Typ

c# - 如何在 C# 中正确处理相关但不同类的调用方法

老实说,我不确定如何表达这个问题,所以如果实际问题不是您根据标题所期望的,请原谅我。C#是我编写过的第一种静态类型语言,到目前为止,它的这一方面一直让我非常头疼。我很确定我对围绕如何以静态类型方式设计系统的核心思想没有很好的把握。这是我正在尝试做的事情的粗略想法。假设我有一个这样的类层次结构:abstractclassDataMold{publicabstractTResult{get;}}classTextMold:DataMold{publicstringResult=>"ABC";}classNumberMold:DataMold{publicintResult=>123}现在假

c# - 防止 Visual Studio 添加新类的默认引用和使用

每当我向VisualStudio(C#)项目添加新类时,我都会自动获得以下用法:使用系统;使用System.Collections.Generic;使用System.Linq;使用System.Text;此外,如果尚不存在以下DLL引用,则会添加它们:系统核心系统数据系统.xml我想阻止VS这样做(当然“使用系统”除外)。有谁知道防止这种情况发生的方法吗? 最佳答案 Marc和Brian都有一个好主意:创建一个新的自定义模板,其中只包含我想要的用法和引用。使用导出模板,这样做真的很简单,我一定会为各种特定项目这样做。对于通用的新类(

c# - 除非继承,否则使 C# 不实例化类的最简单方法?

使C#不实例化类除非继承的最简单方法是什么?听起来很奇怪,但我不想解释原因。我有一个基类和两个继承它的类。我只想使用派生类而不是基类。派生类没有任何额外的功能。不允许我编写newBaseClass();的最简单方法是什么?所以我不会不小心使用它?我确实有对基类而不是派生类进行操作的函数。 最佳答案 使该类成为抽象基类。abstractclassPerson{}classProgrammer:Person{}varperson=newPerson();//compiletimeerrorvarprogrammer=newProgram

C# ITypeInfo.GetContainingTypeLib 在传递 VBA 类的实时实例时失败

所以我尝试在VBA类实例上调用ITypeInfo,虽然它看起来很有希望,但我想看看我是否可以获得对其包含项目的引用,类似于类型库。我认为ITypeInfo.GetContainingTypeLib可能有用,但它会抛出一个异常,表明VBA不会合作。有人知道VBA如何以不同于标准COM规范的方式做事吗?C#类库代码在这里。注册COM互操作并在AssemblyInfo.cs中设置COMVisible(true)以使其可从VBA访问。下面给出了VBA客户端代码。usingSystem;usingSystem.Runtime.InteropServices;usingSystem.Runtime

c# - StringSegment 类的目的是什么?

在Microsoft.Extensions.Primitives包lib中有一个类StringSegment,注释表明它是:Anoptimizedrepresentationofasubstring.在我发现aspnetannouncement#244之前,我并不知道这个特殊的类,声明:Microsoft.Net.Http.Headers转换为使用StringSegments。仍然,看着implementationoftheStringSegment类,我看不出它实际服务的目的是什么。我看到一个缓冲区,我想这表明对部分字符的操作更好(也许是“段”部分?)。我还看到了几个辅助函数,它们在