跳至正文

使用Publiclzer来避免反射的过度使用

众所周知,在我们想要访问或修改私有变量,调用私有方法时可以考虑使用反射。但是反射的语法过于繁杂,十分影响代码可读性与代码简洁度。那么有没有更好的办法在既不影响代码可读性的情况下又可以达到目的的办法呢?当然有!这就是本篇教程的主角—— Publiclzer

下载

一般来说,我们使用的 Publiclzer 是一个 nuget 包。所以通常来说,我们一般通过 NuGet包管理器 来下载一个心仪的 Publiclzer

首先我们在右侧的 解决方案管理器 右键 项目 ,在弹出的选项中选择 管理NuGet程序包 ,如图所示:

管理NuGet程序包

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

NuGet包管理器

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

Publicizer搜索页

之后选择一个安装即可。这里以 Krafs.Publicizer 来作为示例。

使用

在使用这些 Publiclzer 之前一定要仔细阅读它的使用方式。打开 Krafs.Publicizer项目URL可以看到这个程序包的作者在README.md中写了它的使用方式。

我们首先双击项目,如图所示

项目

之后我们就可以对这个项目的配置文件进行编辑。按照 Krafs.Publicizer 的README所说,我们应该在项目配置文件中添加如下所示的代码来对tModLoader的所有私有类型进行公开化:

<ItemGroup>
    <Publicize Include="tModLoader" IncludeVirtualMembers="false" />
</ItemGroup>

其中 Include="tModLoader" 指的是需要公开化的程序集为 tModLoaderIncludeVirtualMembers="false" 指的是公开化的成员不包括虚拟成员(如果包括虚拟成员可能会导致继承 tModLoader 的类时导致 Publiclzer 生成的成员与原程序集成员冲突的问题)。

如图所示:

Publicizer配置

测试

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

Publicizer测试

大功告成!

标签:

发表回复