Unity3D 判断脚本是否继承了某个接口或者类

简要笔记

判断脚本是否继承了某个对象

public TestForCheck obj  

void Start()
{
        #region 方法1,判断是否继承了某个接口或者类
        Type t = typeof(IActionForLicenseCheck);
        Type tt = typeof(TestForCheck);
        Debug.Log("方法1:"+t.IsAssignableFrom(tt));
        #endregion

        #region 方法2,判断是否继承了某个接口
        Debug.Log("方法2:" + obj.GetType().GetInterfaces().Contains(typeof(IActionForLicenseCheck)));
        #endregion
}

返回指定游戏对象的指定接口

    /// 
    /// 返回指定游戏对象上是否存在指定的接口
    /// 
    /// 指定的接口
    /// 指定的游戏对象
    /// 返回接口
    public static Interface GetInterface(GameObject Go) where Interface : class
    {
        return Go.GetComponent(typeof(Interface)) as Interface;
    }
using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Linq;

public class TestReference : MonoBehaviour
{
    void testlinq()
    {
        var types = AppDomain.CurrentDomain.GetAssemblies()
            .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(ISecurity))))
            .ToArray();
    }

    public static IEnumerable GetType(Type interfaceType)
    {
        foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
        {
            foreach (var type in assembly.GetTypes())
            {
                foreach (var t in type.GetInterfaces())
                {
                    if (t == interfaceType)
                    {
                        yield return type;
                        break;
                    }
                }
            }
        }
    }
}

internal interface ISecurity
{
}

参考:
Unity反射机制的理解
Unity3D架构之第一弹 《善用接口》
[Unity c#]c#中的反射 - Lewis.Xiaoa - 博客园
怎么通过反射获取所有继承了某一接口的类
怎么判断某个类是否继承了某个接口?-CSDN论坛
判断一个类是否继承于指定类或是否实现了指定接口
通过反射获取系统中所有继承了某接口的类

你可能感兴趣的:(Unity3D 判断脚本是否继承了某个接口或者类)