c# - 使用继承的类型作为实例 getter 的包装器
问题描述
考虑这两个自定义列表类。
public class CustomList1<T> : ISomeRandomInterface1, IEnumerable<Foo1> {
....
}
public class CustomList2<T> : ISomeRandomInterface2, IEnumerable<Foo2> {
....
}
实施不相关。
是否可以有一个共同的父类型,以便可以像这样的 getter 类型检索相应的列表实例?:
public T getCustomList<T> () {
// return CustomList1<T> or CustomList2<T>
// being T the common parent type holder
}
这个想法将应用与两个类实现相同接口时相同的方法,将该接口用作类型“持有者”来检索或处理代码中的相应类型实例,但适用于更复杂的情况。通常,基本类型充当“持有者”类型。
我认为由于 c# 不支持多重继承,我相信没有办法做到这一点。我想确认这一点,如果有任何合理的干净方法可以为类似但来自不同继承路径的类实现这一点。谢谢。
解决方案
我不确定您是否正确理解...但我尝试回答:)
您可以定义基类型BaseCustomList<T>
并从他那里继承类
public class CustomList1<T> : BaseCustomList<T>, ISomeRandomInterface1, IEnumerable<Foo1> {
....
}
public class CustomList2<T> : BaseCustomList<T>, ISomeRandomInterface2, IEnumerable<Foo2> {
....
}
现在你的功能将是这样的:
public BaseCustomList<T> getCustomList<T>()
{
//return CustomList1<T> or CustomList2<T>
}
推荐阅读
- go - go - 如何在go中获取多部分格式文件的文件名?
- rust - 这个关于生命周期的锈函数有什么区别
- c++ - 在 C++ 中运行 system() 时收到 gnuplot 错误
- python - 如何获取每个 ObjectList、DJANGO 的总和
- python - Flask App 进行多次登录尝试的奇怪行为
- javascript - 无法转换对象中的未定义
- c# - C#如何使用FTP上传文件类
- python - 如何将权重加载到 keras 中具有不同架构的模型中
- c# - ItemsControl -> MousePress 中的多个 InkCanvas 实例在其他实例上导致长线
- php - PHP Curl 在服务器上返回 403 但在本地工作