简要笔记
判断脚本是否继承了某个对象
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
}
返回指定游戏对象的指定接口
/// <summary>
/// 返回指定游戏对象上是否存在指定的接口
/// </summary>
/// <typeparam name="Interface">指定的接口</typeparam>
/// <param name="Go">指定的游戏对象</param>
/// <returns>返回接口</returns>
public static Interface GetInterface<Interface>(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<Type> 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论坛
判断一个类是否继承于指定类或是否实现了指定接口
通过反射获取系统中所有继承了某接口的类