众所周知,在我们想要访问或修改私有变量,调用私有方法时可以考虑使用反射。但是反射的语法过于繁杂,十分影响代码可读性与代码简洁度。那么有没有更好的办法在既不影响代码可读性的情况下又可以达到目的的办法呢?当然有!这就是本篇教程的主角—— Publiclzer
。
下载
一般来说,我们使用的 Publiclzer
是一个 nuget
包。所以通常来说,我们一般通过 NuGet包管理器 来下载一个心仪的 Publiclzer
。
首先我们在右侧的 解决方案管理器 右键 项目 ,在弹出的选项中选择 管理NuGet程序包 ,如图所示:

随后会打开如图所示的页面:

随后选择上侧选项卡中的浏览选项,并在搜索框中搜索 Publicizer

之后选择一个安装即可。这里以 Krafs.Publicizer
来作为示例。
使用
在使用这些 Publiclzer
之前一定要仔细阅读它的使用方式。打开 Krafs.Publicizer
的项目URL可以看到这个程序包的作者在README.md中写了它的使用方式。
我们首先双击项目,如图所示

之后我们就可以对这个项目的配置文件进行编辑。按照 Krafs.Publicizer
的README所说,我们应该在项目配置文件中添加如下所示的代码来对tModLoader的所有私有类型进行公开化:
<ItemGroup> <Publicize Include="tModLoader" IncludeVirtualMembers="false" /> </ItemGroup>
其中 Include="tModLoader"
指的是需要公开化的程序集为 tModLoader
,IncludeVirtualMembers="false"
指的是公开化的成员不包括虚拟成员(如果包括虚拟成员可能会导致继承 tModLoader
的类时导致 Publiclzer
生成的成员与原程序集成员冲突的问题)。
如图所示:

测试
随后我们打开一个cs文件,键入原本为私有类型的类型名:

大功告成!