惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
GbyAI
GbyAI
S
SegmentFault 最新的问题
量子位
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
IT之家
IT之家
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
雷峰网
雷峰网

C#

.NET 11 的 async 性能改进过于逆天 - V2EX macos10.15 上如何配置 vscode C#环境 asp net core 的工作站模式和服务器模式的区别 C#上位机开发是用 winform 那种传统工业风还是 WPF 现代风 paddleocr 的 C#集成问题 C#中异步相关的问题 .NET 换新的异步编程模型了,性能很强 想念 C# 200 块有偿求助 C#高速读取串口,导致软件闪退的问题。 老师,我太想进步了——关于 C#学习 visual studio 2022 代码提示消失 Cursor 生成的代码有个大坑,排查了一晚上才找出原因 C# 有哪些显著的缺点? 有没有 Sematic Kernel 可以落地的应用推荐? 请教下 C#有没有办法用装饰器全局监控方法执行时间 想用 c#的 mvc 实现一个功能. Unity 双击 C#脚本默认打开 Visual Studio 没有代码提示如何解决? 请问 c#有没有一些能规范学习的生产管理系统开源项目? C#串口通信问题 求教 C# 怎么同时交叉编译 windows Linux mac ?跟 go 一样 ClosedXML 如何对一列数据设置高亮重复项?(高亮重复项是 Excel 的一种功能;不能手动给重复单元格设置背景颜色,这样的话用户删除重复项后不会自动去除高亮) 求推荐软件开发练习项目的教学视频或书籍 如何在 visual studio 2022 中新建单元测试项目时默认使用最新版本? C#有像 C++的 libevent 同样定位的高性能跨平台网络库吗? 求助,如何正確劫持系統 DLL 調用 C#生态里有啥简单一点的容易上手的开源后台管理系统吗? .NET6 HttpClient 无反应也不超时? 关于.NET6 httpclient 用 IPV6 还是 IPV4 的疑问 关于 C#调用 DLL 的疑惑 C#程序员开发手机页面有什么适合的 UI 框架?
泛型存 List 的一个问题
exqibao · 2023-07-01 · via C#

最近在看视频学习 untiy 没有源码,跟着视频做遇到一个问题。

就是实现继承单例“MySingletonBase”,管理基类“ManagerBase”继承“MySingletonBase”实现单例,“UIManager”又继承“ManagerBase”,现在的问题就是假如有好多个“ManagerBase”的实现类怎么存到一个“List<ManagerBase<MonoBehaviour>> Managers = new List<ManagerBase<MonoBehaviour>>()”里面,主要就是那个泛型“T”不知道怎么处理,一直提示类型不对。

看视频就看到“UIManager : ManagerBase<UIManager>”是这么写,至于 List 怎么改都存不进去,存进去后主要就是遍历执行 ManagerBase 的方法,泛型 T 对于“ManagerBase”也没有什么用,只为了传给“MySingletonBase”。

怎么才能正常存 List 并遍历执行 ManagerBase 的方法?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MySingletonBase <T> : MonoBehaviour where T : MonoBehaviour
{

    private static T instance;

    public static T Instance
    {
        get
        {
            return instance;
        }
    }

    void Awake() {
        instance = this as T;
    }
}

using System;
using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;

public abstract class ManagerBase<T> : MySingletonBase<T> where T : MonoBehaviour
{
    public List<MonoBase> Monos = new List<MonoBase>();

    public void Register(MonoBase monoBase)
    {
        if (!Monos.Contains(monoBase))
        {
            Monos.Add(monoBase);
        }
    }
    
    ....
}

using System;
using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;

public class UIManager : ManagerBase<UIManager>
{
    protected override byte GetMessageType()
    {
        return MessageType.Type_Acount;
    }
}