问题标签 [abstract-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ASP.NET 控制器基类 User.Identity.Name
如本文所述,我创建了一个抽象的基本控制器类,以便能够将数据从控制器传递到 master.page。在这种情况下,我想在我的数据库中查找用户,查询 User.Identity.Name(仅当他登录时)。
但是,我注意到在这个抽象基类中,User
属性总是null
. 我该怎么做才能让它工作?
非常感谢
.net - 抽象类的命名约定
我清楚地记得,有一次,微软推动的指导方针是将“Base”后缀添加到抽象类中,以消除它是抽象的事实。因此,我们有像System.Web.Hosting.VirtualFileBase
, System.Configuration.ConfigurationValidatorBase
, System.Windows.Forms.ButtonBase
, 和当然的类System.Collections.CollectionBase
。
但我注意到,最近,框架中的许多抽象类似乎并没有遵循这个约定。例如,以下类都是抽象的,但不遵循此约定:
System.DirectoryServices.ActiveDirectory.DirectoryServer
System.Configuration.ConfigurationElement
System.Drawing.Brush
System.Windows.Forms.CommonDialog
这就是我可以在几秒钟内鼓起的。所以我去查了官方文档是怎么说的,以确保我没有疯。我在 MSDN 的Design Guidelines for Developing Class Libraries中找到了类、结构和接口的名称。奇怪的是,我找不到将“Base”添加到抽象类名称末尾的指南。并且该指南不再适用于 1.1 版框架。
那么,我会失去它吗?这个指南曾经存在吗?是不是一句话就被抛弃了?在过去的两年里,我是否一直在自己创造长的班级名称?
有人在这里扔我一根骨头。
更新 我没疯。该指南存在。Krzysztof Cwalina 在 2005 年对此表示不满。
java - Java:接口与抽象类(关于字段)
根据我收集到的信息,我想强制一个类使用特定的私有字段(和方法)我需要一个抽象类,因为接口只声明公共/静态/最终字段和方法。正确的??
我刚开始我的第一个大型 Java 项目,想确保以后不会伤害自己 :)
c# - 使用泛型时转换为抽象类或接口
我有这个方法 Verify_X,它在数据绑定期间为列表框选定值调用。问题是强类型数据源。我想使用抽象类 BaseDataSource 或接口来调用支持的方法:Parameters[] 和 Select(),而不是使用如下所示的最具体的实现。
这样一种方法可以用于我拥有的所有不同类型的数据源,而不是为每个数据源使用一种方法。它们都以相同的方式继承。
这是继承/实现的链
BaseDataSource 具有我需要的方法和属性。DseDataSource 的实现方式如下:
我知道可以编辑 DseDataSource 类,添加一个接口来访问 Parameters[] 和 Select(),然后针对它进行编程,这允许我想要的,但这需要编辑 NetTiers 库,我很想知道这是否可以做到,因为它看起来很困难。
最终结果将是如下代码:
oop - 何时使用接口而不是抽象类,反之亦然?
这可能是一个通用的 OOP 问题。我想根据它们的用法在接口和抽象类之间进行通用比较。
什么时候需要使用接口,什么时候需要使用抽象类?
c++ - 纯虚方法 VS。函数指针
最近我一直在设计一个 Thread 类库,我做了一个 Thread 抽象类,如下所示:
真正的线程类会继承这个抽象类并doOperation
以自己的逻辑实现方法,类似于Strategy Pattern。
问题是我依赖于一个 C 后端库,它定义了在以下函数中运行线程:
如你看到的; 第二个参数是一个指向线程循环(主函数)的函数指针,这就是问题所在;由于我使用这个 C 函数在run
方法中启动线程,所以我将地址传递doOperation
给第二个参数,但由于类型不匹配,这无法完成。
我尝试使用reinterpret_cast
返回指针,但我 ISO-C++ 禁止返回未初始化函数成员的指针。我不知道如何克服这个冲突,我猜使用静态方法是唯一的解决方案,但这会破坏我的设计模式!
c# - 为什么我不能在抽象 C# 类上创建抽象构造函数?
我正在创建一个抽象类。我希望我的每个派生类都被迫实现构造函数的特定签名。因此,如果我想强迫他们实现一种方法,我会做我会做的事情,我做了一个抽象的方法。
但是我收到一条消息说抽象修饰符在这个项目上是无效的。我的目标是强制执行一些这样的代码。
这都是 C# .NET 代码。谁能帮我吗?
更新 1
我想补充一些东西。我最终得到的是这个。
这就是一些人所说的,默认是私有的,并且该类需要实现一个构造函数。但是,这不会强制使用签名 A(int a, int b) 的构造函数。
更新 2
我应该清楚,为了解决这个问题,我将我的默认构造函数设为私有,并保护我的其他构造函数。我并不是真的在寻找一种让我的代码工作的方法。我处理好了。我希望了解为什么 C# 不允许您这样做。
ruby - 如何在 Ruby 中实现一个抽象类
我知道 Ruby 中没有抽象类的概念。但是如果需要实施,我该怎么做呢?我试过这样的事情:
但是,当我尝试实例化 B 时,它会在内部调用A.new
会引发异常的调用。
此外,模块不能被实例化,但它们也不能被继承。将新方法设为私有也行不通。
有没有人有任何指示?
c# - C#:创建抽象类的实例而不定义新类
我知道它可以在 Java 中完成,因为我过去曾广泛使用过这种技术。下面将显示 Java 中的示例。(附加问题。这种技术叫什么?很难找到没有名字的例子。)
现在,我的主要问题是,这也可以在 C# 中完成,如果可以,怎么做?