工具方面
推荐ILSpy
https://www.cr173.com/soft/30697.html 下载
打开拖入dll 文件即可
如何生成dll 文件
新建一个动态链接库项目
右上角是绿色的C# 别弄成VB 了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestDll
{
public class Testdll1
{
private static int privateMember = 6 ; //dll 中的私有变量
private static void PrivateStaticFunc()
{
Console.WriteLine("使用Dll文件的PrivateStaticFunc方法");
}
private void PrivateFunc()
{
Console.WriteLine("使用Dll文件的PrivateFunc方法");
}
public static void StaticFunc()
{
Console.WriteLine("使用Dll文件的StaticFunc方法");
}
public void UseDllFunc1()
{
Console.WriteLine("使用Dll文件的UseDllFunc1方法");
}
}
}
右键点击生成
在这里能找到dll 文件
现在我想在其他项目引用dll 文件
可以把dll 文件拖到Unity 目录中放到Android /Plugins 下面即可
也可以新建一个控制台应用程序
在依赖项添加项目引用即可用到上面的dll 文件
using System;
using System.Reflection;
using TestDll;
namespace UseDll1
{
class Program
{
static void Main(string[] args)
{
Testdll1 testdll1 = new Testdll1();
testdll1.UseDllFunc1();
Testdll1.StaticFunc();
//获私方法
//Type type = testdll1.GetType();
//MethodInfo methodInfo = type.GetMethod("PrivateFunc", BindingFlags.Instance | BindingFlags.NonPublic);
//object obj = System.Activator.CreateInstance(type);
//object[] parameters = new object[] { };
//object i = methodInfo.Invoke(obj, parameters);
//获私字段
//Type type = testdll1.GetType();
//FieldInfo field = type.GetField("privateMember", BindingFlags.Instance | BindingFlags.NonPublic|BindingFlags.Public);
//Console.WriteLine(field);
//Console.WriteLine(field.GetValue(testdll1));
//获所有私字段
//FieldInfo[] fields = type.GetFields( BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine(fields[0]);
//Console.WriteLine(fields[0].GetValue(testdll1));
//获所有私静态字段
//Type type = testdll1.GetType();
//FieldInfo field1 = type.GetField("privateMember" ,BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);
//Console.WriteLine(field1);
//Console.WriteLine(field1.GetValue(testdll1));
}
}
}
获取什么样的类型可以在
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static
里面添加