abstract-class 相关问题

抽象类是无法实例化的类。它们的存在是为了为几个具体类提供通用功能和接口规范。

不兼容的类型:ArrayList<Link>无法转换为Links<Link>

我正在尝试实例化一个抽象类,但它不起作用。 抽象类 Links 实现 List{ } 链接 notVisitedLinks = new ArrayList(); 我...

回答 1 投票 0

在通用 C# 类中链接隐式运算符

对于以下通用 C# 类,我想将 T 转换为 K: 公共抽象类 ValueType : IValueType 其中 K : ValueType,new() { 公共抽象电视...

回答 4 投票 0

如何从 PHP 8 中的抽象类调用非静态函数?

我想更新我们当前在 PHP 7.2 上运行的项目,但我遇到了一个无法轻松解决的问题。 公共函数 getCategories($type){...} //在另一个没有实现Category的文件中 $

回答 1 投票 0

有没有办法让基类要求派生类具有与派生的同一类的对象进行比较的函数?

我有一项家庭作业,该作业的一小部分要求一个抽象的父“电影”类,其中包含三个具体子类:“喜剧”、“戏剧”和“古典”。 每个子类永远不会

回答 1 投票 0

C# 泛型匹配抽象类类型时出现的问题

我试图运行这段代码,但是当我尝试检查时,存在一个问题:对象的类型与其抽象类类型不匹配 它在“if(处理程序是处理程序 我试图运行这段代码,但是当我尝试检查时,存在一个问题,即对象的类型与其抽象类类型不匹配 它位于“if (handler is Handler h)”这一行 void Main() { var requestHandler = new RequestHandler(); var result = requestHandler.Handle(new GetAge()); Console.WriteLine(result); } public interface IRequest<T> { } public class GetAge : IRequest<int> { } public interface IHandler {} public abstract class Handler<TRequest, TResponse> : IHandler where TRequest : IRequest<TResponse> { public TResponse Handle(IRequest<TResponse> request) { return Handle((TRequest)request); } protected abstract TResponse Handle(TRequest requst); } public class GetAgeHandler : Handler<GetAge, int> { protected override int Handle(GetAge request) { return 20; } } public class RequestHandler { public Dictionary<Type, IHandler> requestHandlers = new() { [typeof(GetAge)] = new GetAgeHandler() }; public T Handle<T>(IRequest<T> request) { var handler = requestHandlers[request.GetType()]; if (handler is Handler<IRequest<T>, T> h) { return h.Handle(request); } return default; } } 看起来应该可以,但似乎我做错了什么 简单来说,模式匹配失败是因为泛型类型默认是不变的。即使您有Handler<GetAge, int>,也不认为与Handler<IRequest<int>, int>兼容。如果泛型类型是协变或逆变,那么这是允许的,但在这种特定情况下,这是不可能的。 解决此问题的一种方法是定义 Handle 方法,如下所示: public TResponse Handle<TRequest, TResponse>(TRequest request) where TRequest : IRequest<TResponse> { var handler = requestHandlers[request.GetType()]; if (handler is Handler<TRequest, TResponse> h) { return h.Handle(request); } return default(TResponse); } 你会这样称呼它: var result = requestHandler.Handle<GetAge, int>(new GetAge());

回答 1 投票 0

抽象@property - 实例化“部分实现”类?

我阅读了关于抽象类 abc.ABC 的非常好的文档。它有这个例子(我为了这个问题而缩短了): 导入 abc 基类(abc.ABC): @财产 @abc。

回答 1 投票 0

C++ 在具体类中强制重写方法

C++中有没有一种方法可以编写一个具体的类,当从它派生另一个类时,该类有一个必须重写的方法。抽象类允许强制派生类创建

回答 6 投票 0

C# - 从基类更新子类

我有一种情况需要区分不同“类型”的客户对象。 IE。: 公共抽象类客户 { 受保护的客户(字符串客户类型,字符串

回答 1 投票 0

定义抽象方法而不指定参数

我正在编写一个带有抽象方法的抽象类(因此,从它继承的所有类都必须实现该方法)。但是,我不想指定该方法必须使用的参数,...

回答 5 投票 0

将特征矩阵存储在二进制文件中的通用函数

我知道下面的代码可以用来将数据类型为double的特征矩阵的数据写入二进制文件。 模板 void WriteEigenMatrix(const Eigen::Matrix 我知道以下代码可用于将数据类型为 double 的特征矩阵的数据写入二进制文件。 template<class T> void WriteEigenMatrix(const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& m, const char* fileName) { std::ofstream outFile(fileName, std::ios_base::out | std::ios_base::binary); outFile.write(m.data(), m.rows()*m.cols()); outFile.close();` } 如何概括此函数以接受其他特征数据类型(如 Eigen::Vector 和 Eigen::Array)作为输入? 如果我使用 Eigen::EigenBase,我知道该函数将接受所有此类数据类型。然而,问题是我不能再使用m.data(),因为它没有在基类中定义。 有什么建议可以解决这个问题吗? 如果您只想允许“密集”对象,您可以按如下方式操作: template<class Derived> void WriteEigen(const Eigen::DenseBase<Derived>& dense, const char* fileName) { std::ofstream outFile(fileName, std::ios_base::out | std::ios_base::binary); outFile.write(reinterpret_cast<const char*>(dense.derived().data()), dense.rows() * dense.cols()); outFile.close(); } 所有稠密矩阵(包括向量和数组)都继承自DenseBase,在derived上调用DenseBase将返回具体的矩阵类型。 或使用您喜欢的任何底座。

回答 1 投票 0

Xamarin iOS 绑定 - 协议 - 无法创建抽象类的实例

我使用 Sharpie 为 Zebra 扫描仪 SDK 生成了一些绑定代码。 斑马扫描仪 SDK 一旦我处理了 [Verify] 属性,生成的代码就可以正常构建。 的起点...

回答 2 投票 0

抽象类打字稿(Angular2)的依赖注入

我有抽象类(没有构造函数),我想向其中注入另一个类。 抽象类: 从 '../../shared/services/errorHandler.service' 导入 { ErrorHandler } ; 导入 { 注入 }...

回答 4 投票 0

Type.GetProperties 方法返回一个 PropertyInfo[] 但 PropertyInfo 是 Abstract

在 C# 文档中,Type 类的 GetProperties 方法返回属性信息数组:System.Reflection.PropertyInfo[]。您可以在此处的文档中看到这一点: https://学习。

回答 1 投票 0

抽象类中的SerializeField未出现在检查器中

我遇到了我认为可能是语法问题的问题。我有一个抽象类: 公共抽象类 MyAbstractClass : MonoBehavior { 公共抽象 GameObject ShouldBeSerialized { 获取;是...

回答 1 投票 0

如何在Python中实现子类中抽象属性的ABC类定义

我有以下 abc 课程: 记录器类(ABC): @抽象属性 def 文件名前缀(自身): 经过 @抽象属性 deftrace_id_length(自身): 经过 @

回答 1 投票 0

定义可由父类设置的抽象属性

我不太熟悉 C# 或抽象类,所以这可能是一个简单的修复。我有一个带有可为空 Action 属性的抽象类: 公共抽象类 MyAbstractClass { 公开摘要

回答 1 投票 0

Python 中具体类的抽象类

随着Python 3.12的发布,pathlib.Path现在可以被子类化。我想为非操作系统环境(ftp、sftp、s3 存储等)创建一个子类 CustomPath(Path),这意味着我必须重新实现...

回答 1 投票 0

在C#中,如果默认所有接口成员都是public和abstract的,为什么我们不能在实现类时使用override呢?

在C#中,如果默认所有接口成员都是public和abstract的,为什么我们不能在实现类时使用override呢?虽然我们可以在抽象类中使用重写。 接口IE示例 { int Ara(...

回答 1 投票 0

关于Java中的抽象类构造函数

我有疑问是否可以在抽象类的另一个构造函数中调用构造函数。例如, 公共抽象类 Sth{ 受保护的 Sth(){} protected Sth(整数){} 受保护...

回答 3 投票 0

如何鼓励未使用的抽象基类的去虚拟化?

我有一个浅层类层次结构(底部的最小可重现代码示例),其中我使用抽象基类来保存一堆相关类之间的大部分通用逻辑,并带有一个 virt...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.