zoukankan      html  css  js  c++  java
  • C# 泛型约束 xxx<T> Where T:约束(一)

    泛型约束

    代码举例

    发现我们游戏的代码中,主程写了很多类似这样的代码:

    public static T CreateObject<T>(out int objectId) where T : new() //方法名
    
    //单例类
    public class CSingleton<T> where T : new() 
    
    //根据 url和Type 查找UI控件
    public T GetControl<T>(string uri, Transform findTrans = null, bool isLog = true) where T : UnityEngine.Object 
    
    public T FindControl<T>(string name) where T : Component
    
    public void OpenWindow<T>(params object[] args) where T : CUIBase
    
    public void CallUI<T>(Action<T, object[]> callback, params object[] args) where T : CUIBase
    
    //加载Tab表
    public void LoadTab<T>(string tabPath) where T : CBaseInfo, new()

    具体使用

    定义:public T GetInfo<T>(string id) where T : CBaseInfo

    使用:ActorInfo actorInfo = CGameSettings.Instance.GetInfo<ActorInfo>(actorId);

    解释:[T GetInfo(String id)]传入一个 ID 返回一个Class [where T:CBaseInfo]约束这个Class的Type 必须 继承之 CBaseInfo

    插件也使用泛型写法

    当然项目中使用一些插件也是有类似的写法

    FingerGestures

    public abstract class ContinuousGestureRecognizer<T> : GestureRecognizerTS<T> where T : ContinuousGesture, new()
    
    public static T CreateAsset<T>() where T : ScriptableObject
    
    public abstract class FingerEventDetector<T> : FingerEventDetector where T : FingerEvent, new()

    NGUI

    static public T[] FindActive<T> () where T : Component
    
    static public T AddChild<T> (GameObject parent, bool undo) where T : Component
    
    static public T Begin<T> (GameObject go, float duration) where T : UITweener

    TK2D

    public static T LoadResourceByName<T>(string guid) where T : UnityEngine.Object 
    
    public static T AddComponent<T>(GameObject go, tk2dSpriteCollectionData spriteCollection, string spriteName) where T : tk2dBaseSprite
  • 相关阅读:
    STM32 之 USB IP(USB模块) 详解(转)
    USB 协议分析之 HID 设备(转)
    Hibernate项目用Maven创建(转)
    eclipse查看hadoop中文件出现乱码
    用spring+hibernate+struts 项目记录以及常用的用法进等
    hibernate之处理视图
    Hadoop组件之-HDFS(HA实现细节)
    hadoop2.x NameNode 的共享存储实现
    Hadoop-2.X HA模式下的FSImage和EditsLog合并过程
    jQuery中读取json文件示例代码
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/3894061.html
Copyright © 2011-2022 走看看