草庐IT

抽象度

全部标签

c# - 在我的场景中抽象和 protected 之间有什么区别 - C#

具有公共(public)构造函数的公共(public)抽象类与具有protected构造函数的公共(public)类之间有什么区别。我们的抽象类中没有任何抽象函数,但我们希望程序员只能创建扩展该类的对象。这两种情况都可以编译和工作,但是我不明白在什么情况下使用哪个更好。我从小就明白,虽然你不能直接实例化一个抽象类(只能通过一个非抽象的子类),但抽象类通常应该包含需要由该类的子类实现的抽象函数。在公共(public)类中没有protected构造函数是否意味着无法实例化此类(这是我们唯一的构造函数)。 最佳答案 MSDNstates关

c# - 开发抽象语法树

我在互联网上搜索了一些关于开发C#抽象语法树的新手信息,但我只能找到那些已经“知情”的人的信息。我是一名业务线应用程序开发人员,所以像这样的主题有点让我难以理解,但这是为了我自己的教育,所以我愿意花时间学习任何必要的概念。一般来说,我想了解从代码字符串开发代码抽象表示背后的技术。更具体地说,我希望能够使用这个AST来进行C#语法高亮显示。(我意识到语法高亮不一定需要AST,但这似乎是学习一些“编译器”级技术的好机会。)如果这个问题有点宽泛,我深表歉意,但我不确定还能怎么问。谢谢! 最佳答案 首先你需要了解什么是解析,什么是抽象语法树

c# - T 必须是具有公共(public)无参数构造函数的非抽象类型,以便将其用作泛型类型或方法中的参数 'TModel'

我尝试在SO中搜索答案并偶然发现了类似的问题,但我无法使用它们来解决我的问题,因此请尽量不要将其标记为重复。让我们继续进行真正的交易:我有一个用于标准化EntityFramework数据库优先模型的通用库。这些是我创建的通用类:publicabstractclassGenericLookupModel:IActive,ICreated,IModified,IIdentity,IStringValue{publicboolis_active{get;set;}publicstringvalue{get;set;}publicstringdescription{get;set;}publi

c# - 根据子类指定基类抽象方法的返回类型

我有以下结构:abstractclassBase{publicabstractListGet();//Whatshouldbethegenerictype?}classSubOne:Base{publicoverrideListGet(){}}classSubTwo:Base{publicoverrideListGet(){}}我想创建一个抽象方法,返回具体子类的任何类。因此,正如您从示例中看到的那样,SubOne中的方法应该返回List而SubTwo中的方法应该返回List.我在基类中声明的签名中指定什么类型?[更新]感谢您发布的答案。解决方案是使抽象类通用,如下所示:abstrac

c# - 抽象类构造器

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whycan’tIcreateanabstractconstructoronanabstractC#class?抽象类的Constructor可以标记为'abstract'吗?

c# - 从抽象类引用继承的 EntitySet 的 dapper PropInfo Setter 为 null

我正在尝试用一些简洁的查询替换令人讨厌的LINQ2SQL命中以提高性能。这样做时,我必须将一堆不同的对象编织在一起,以创建保存ASN信息所需的所有信息所需的大对象。我目前遇到的问题是抽象类Orders,该类由两个单独的类AutionOrder和MerchantOrder使用鉴别器属性实现。由于我无法使用dapper创建抽象类对象,因此我改用其中一个公共(public)类。但是,当它构建对象时,它在GetSettableProps内部失败,它找到了正确的DeclaringType但是GetProperty方法在它返回null时正在寻找internal或EntitySet的属性。我尝试使用

c# - 我可以用这种方式为所有派生的单例定义一个抽象类吗?

这是我的抽象类,每次我想制作一个Singleton时都必须派生它:publicabstractclassSingletonwhereT:Singleton{privatestaticreadonlyLazy_instance=newLazy(()=>{varconstructor=typeof(T).GetConstructor(BindingFlags.NonPublic|BindingFlags.Instance,null,newType[0],null);return(T)constructor.Invoke(null);});publicstaticTInstance{get{

c# - C#中的重用抽象原则

在我们的C#MVC应用程序中,我们有很多接口(interface)与实现它们的对象一对一映射。即:基本上,对于创建的每个对象,都执行了“提取接口(interface)”操作。Moq使用这些接口(interface)为我们的单元测试生成模拟对象。但那是唯一一次重新使用接口(interface)。我们系统中没有具体对象实现多个接口(interface)。谁能告诉我这是否会在以后造成问题?如果是这样,它们会是什么?我在想,我们的应用程序有很多重复,例如在这两个接口(interface)中(编辑:在我们的服务层中)唯一不同的是方法名称和它们采用的参数类型,但是从语义上讲,他们对发送消息的存储库

c# - 抽象类列表

我有抽象类:publicabstractclassMyClass{publicabstractstringnazwa{get;}}还有两个继承自MyClass的类:publicclassMyClass1:MyClass{publicoverridestringnazwa{get{return"aaa";}}}publicclassMyClass2:MyClass{publicoverridestringnazwa{get{return"bbb";}}}在另一个类中我创建了列表:ListmyList;现在我要创作myList=newList;编译器显示错误:Cannotimplicitl

c# - 没有任何抽象方法的抽象类

我很惊讶地知道C#中的抽象类也可以没有抽象方法。abstractclassAbstractDemo{publicvoidshow(){Console.WriteLine("InShowMethod");}}classMainDemo:AbstractDemo{publicstaticvoidMain(){Console.WriteLine("InMainMethod");}}有什么解释吗? 最佳答案 有时你不想给一个类实例化的可能性,但你需要这个类作为其他类的基类。选择抽象类而不是接口(interface)的原因是您可以提供一些基本