<?xml version="1.0"?>
<doc>
<assembly>
<name>0Harmony</name>
</assembly>
<members>
<member name="T:HarmonyLib.DelegateTypeFactory">
<summary>A factory to create delegate types</summary>
</member>
<member name="M:HarmonyLib.DelegateTypeFactory.#ctor">
<summary>Default constructor</summary>
</member>
<member name="M:HarmonyLib.DelegateTypeFactory.CreateDelegateType(System.Reflection.MethodInfo)">
<summary>Creates a delegate type for a method</summary>
<param name="method">The method</param>
<returns>The new delegate type</returns>
</member>
<member name="T:HarmonyLib.GetterHandler`2">
<summary>A getter delegate type</summary>
<typeparam name="T">Type that getter gets field/property value from</typeparam>
<typeparam name="S">Type of the value that getter gets</typeparam>
<param name="source">The instance get getter uses</param>
<returns>An delegate</returns>
</member>
<member name="T:HarmonyLib.SetterHandler`2">
<summary>A setter delegate type</summary>
<typeparam name="T">Type that setter sets field/property value for</typeparam>
<typeparam name="S">Type of the value that setter sets</typeparam>
<param name="source">The instance the setter uses</param>
<param name="value">The value the setter uses</param>
<returns>An delegate</returns>
</member>
<member name="T:HarmonyLib.InstantiationHandler`1">
<summary>A constructor delegate type</summary>
<typeparam name="T">Type that constructor creates</typeparam>
<returns>An delegate</returns>
</member>
<member name="T:HarmonyLib.FastAccess">
<summary>A helper class for fast access to getters and setters</summary>
</member>
<member name="M:HarmonyLib.FastAccess.CreateInstantiationHandler``1">
<summary>Creates an instantiation delegate</summary>
<typeparam name="T">Type that constructor creates</typeparam>
<returns>The new instantiation delegate</returns>
</member>
<member name="M:HarmonyLib.FastAccess.CreateGetterHandler``2(System.Reflection.PropertyInfo)">
<summary>Creates an getter delegate for a property</summary>
<typeparam name="T">Type that getter reads property from</typeparam>
<typeparam name="S">Type of the property that gets accessed</typeparam>
<param name="propertyInfo">The property</param>
<returns>The new getter delegate</returns>
</member>
<member name="M:HarmonyLib.FastAccess.CreateGetterHandler``2(System.Reflection.FieldInfo)">
<summary>Creates an getter delegate for a field</summary>
<typeparam name="T">Type that getter reads field from</typeparam>
<typeparam name="S">Type of the field that gets accessed</typeparam>
<param name="fieldInfo">The field</param>
<returns>The new getter delegate</returns>
</member>
<member name="M:HarmonyLib.FastAccess.CreateFieldGetter``2(System.String[])">
<summary>Creates an getter delegate for a field (with a list of possible field names)</summary>
<typeparam name="T">Type that getter reads field/property from</typeparam>
<typeparam name="S">Type of the field/property that gets accessed</typeparam>
<param name="names">A list of possible field names</param>
<returns>The new getter delegate</returns>
</member>
<member name="M:HarmonyLib.FastAccess.CreateSetterHandler``2(System.Reflection.PropertyInfo)">
<summary>Creates an setter delegate</summary>
<typeparam name="T">Type that setter assigns property value to</typeparam>
<typeparam name="S">Type of the property that gets assigned</typeparam>
<param name="propertyInfo">The property</param>
<returns>The new setter delegate</returns>
</member>
<member name="M:HarmonyLib.FastAccess.CreateSetterHandler``2(System.Reflection.FieldInfo)">
<summary>Creates an setter delegate for a field</summary>
<typeparam name="T">Type that setter assigns field value to</typeparam>
<typeparam name="S">Type of the field that gets assigned</typeparam>
<param name="fieldInfo">The field</param>
<returns>The new getter delegate</returns>
</member>
<member name="T:HarmonyLib.FastInvokeHandler">
<summary>A delegate to invoke a method</summary>
<param name="target">The instance</param>
<param name="parameters">The method parameters</param>
<returns>The method result</returns>
</member>
<member name="T:HarmonyLib.MethodInvoker">
<summary>A helper class to invoke method with delegates</summary>
</member>
<member name="M:HarmonyLib.MethodInvoker.GetHandler(System.Reflection.MethodInfo,System.Boolean)">
<summary>Creates a fast invocation handler from a method</summary>
<param name="methodInfo">The method to invoke</param>
<param name="directBoxValueAccess">Controls if boxed value object is accessed/updated directly</param>
<returns>The <see cref="T:HarmonyLib.FastInvokeHandler"/></returns>
<remarks>
<para>
The <c>directBoxValueAccess</c> option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array
passed to the fast invocation handler.
Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object.
Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array.
<example>For example,
<code>
var val = 5;
var box = (object)val;
var arr = new object[] { box };
handler(arr); // for a method with parameter signature: ref/out/in int
</code>
</example>
</para>
<para>
If <c>directBoxValueAccess</c> is <c>true</c>, the boxed value object is accessed (and potentially updated) directly when the handler is called,
such that all references to the boxed object reflect the potentially updated value.
In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both <c>box</c> and <c>arr[0]</c>
now reflect the value 10. Note that the original <c>val</c> is not updated, since boxing always copies the value into the new boxed value object.
</para>
<para>
If <c>directBoxValueAccess</c> is <c>false</c> (default), the boxed value object in the arguments array is replaced with a "reboxed" value object,
such that potential updates to the value are reflected only in the arguments array.
In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only <c>arr[0]</c> now reflects the value 10.
</para>
</remarks>
</member>
<member name="T:HarmonyLib.Memory">
<summary>A low level memory helper</summary>
</member>
<member name="M:HarmonyLib.Memory.MarkForNoInlining(System.Reflection.MethodBa
没有合适的资源?快使用搜索试试~ 我知道了~
Harmony.2.2.2.0-Harmony 为您提供了一种优雅且高级的方式来更改用 C# 编写的应用程序中的功能完整项目源码
共21个文件
xml:8个
dll:8个
json:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 153 浏览量
2023-10-03
22:56:28
上传
评论
收藏 3.9MB ZIP 举报
温馨提示
Harmony 为您提供了一种优雅且高级的方式来更改用 C# 编写的应用程序中的功能。它在游戏中效果很好,并且在 7 天死亡、战斗技术、围攻、城市:天际线、坎巴拉太空计划、氧气不包括、乌鸦菲尔德、边缘世界、庇护所、星露谷、斯塔塞尔、深海、终极书游戏、总矿工、未转动、SCP:秘密实验室等游戏中得到了很好的认可。如果使用 C# 进行开发,并且代码作为模块/插件加载到主机应用程序中,则可以使用 Harmony 更改该应用程序的所有可用程序集的功能。其他补丁库仅允许您替换原始方法,而 Harmony 则更进一步。它还用于单元测试 WPF 控件和许多其他领域。安装是通过在项目中使用 0Harmony.dll 或使用 Lib.Harmony nuget 包来完成的。
资源推荐
资源详情
资源评论
收起资源包目录
Harmony.2.2.2.0-Harmony 为您提供了一种优雅且高级的方式来更改用 C# 编写的应用程序中的功能完整项目源代.zip (21个子文件)
net45
0Harmony.xml 228KB
0Harmony.dll 891KB
net5.0
0Harmony.xml 228KB
0Harmony.deps.json 20KB
0Harmony.dll 235KB
net472
0Harmony.xml 228KB
0Harmony.dll 910KB
Lib.Harmony.2.2.2.nupkg 1.97MB
net48
0Harmony.xml 228KB
0Harmony.dll 910KB
netcoreapp3.1
0Harmony.xml 228KB
0Harmony.deps.json 20KB
0Harmony.dll 232KB
netcoreapp3.0
0Harmony.xml 228KB
0Harmony.deps.json 20KB
0Harmony.dll 232KB
net35
0Harmony.xml 228KB
0Harmony.dll 889KB
net6.0
0Harmony.xml 228KB
0Harmony.deps.json 20KB
0Harmony.dll 237KB
共 21 条
- 1
资源评论
小兔子平安
- 粉丝: 251
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功