Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Binding Flags.Static
Custom Role-Based Authorization with JWT in ASP.NET Core
In this article, I’ll guide you through implementing a custom role-based authorization handler in ASP.NET Core using JWT authentication. This approach allows you to dynamically control API route access based on user roles and route permissions, making it ideal for applications with complex role hierarchies or permissions. Our solution involves: A custom authorization requirement and handler. Dynamic permissions management based on role-based access.
论如何直接用EF Core实现创建更新时间、用户审计,自动化乐观并发、软删除和树形查询(上)
数据库并发,数据审计和软删除一直是数据持久化方面的经典问题。早些时候,这些工作需要手写复杂的SQL或者通过存储过程和触发器实现。手写复杂SQL对软件可维护性构成了相当大的挑战,随着SQL字数的变多,用到的嵌套和复杂语法增加,可读性和可维护性的难度是几何级暴涨。因此如何在实现功能的同时控制这些SQL的复杂度是一个很有价值的问题。而且这个问题同时涉及应用软件和数据库两个相对独立的体系,平行共管也是产生混乱的一大因素。 EF Core作为 .NET平台的高级ORM框架,可以托管和数据库的交互,同时提供了大量扩展点方便自定义。以此为基点把对数据库的操作托管后便可以解决平行共管所产生的混乱,利用LINQ则可以最大程度上降低软件代码的维护难度。 由于项目需要,笔者先后开发并发布了通用的基于EF Core的国际化资源管理服务和Serilog日志持久化服务,不过这两个功能包并没有深度利用EF Core,虽然主要是因为没什么必要。但是项目还需要提供常用的数据审计和软删除功能,因此对EF Core进行了一些更深入的研究。...
Invoke An Overloaded Generic Method On A Static Class
I'm trying to invoke methods on the InputExtensions static class in order to create overloads for the methods on the HtmlHelper class. So anyway, I still couldn't invoke the method Solution 1: Unfortunately, it seems that it is not possible...
实现游戏内置命令行系统
之前写过一个Unity内置的控制台,感觉它小巧但完善,适合作为一个完整的项目托管到Github,所以打算完善整理一下,并进行周期性的维护和更新。项目当前已经上传到了Github和Unity商店,可以从下面的地址跳转: Unity商店还在审核中,审核完毕时我会更新Unity商店的连接。 更新: @2024.01.06 评论区不是我关的,v0.11版本已经发布了,支持定义命令tag,支持监听UnityEngine的Debug.Log,所以你的项目里的Debug.Log不用做任何调整,支持命令查询缓存,提高查询效率。 目前该项目还不是非常的完善,仍然有很多我希望追加的特性和功能,后续会逐步的优化和完善。下面是该项目的截图,以及在我自己的游戏中魔改后的截图: 这个命令行系统做了高度的解耦合,它的内核部分不依赖Unity引擎,转而通过引入了一组接口和该组接口的Unity实现去绑定,所以这个命令行系统的内核部分理论上可以用于任何使用C#作为脚本语言的游戏中,即便不是Unity语言,它的结构也非常简单,可以重写一个出来,本文着重于讲解一下这个控制台实现的细节和思考的过程。...
# Unity 如何获取Texture 的内存大小
在Unity中,要获取Texture的内存文件大小,可以使用UnityEditor.TextureUtil类中的一些函数。这些函数提供了获取存储内存大小和运行时内存大小的方法。由于UnityEditor.TextureUtil是一个内部类,我们需要使用反射来访问它。 步骤 导入UnityEditor命名空间和System.Reflection命名空间: using UnityEditor; using System.Reflection; 创建一个函数来获取Texture的内存文件大小: public static long GetTextureFileSize(Texture2D texture) { long fileSize = 0; // 使用反射获取UnityEditor.TextureUtil类的Type Type textureUtilType = typeof(TextureImporter).Assembly.GetType("UnityEditor.TextureUtil"); //...
如何在long-running task中调用async方法
long-running task 是指那些长时间运行的任务,比如在一个 while True 中执行耗时较长的同步处理。 下面的例子中,我们不断从队列中尝试取出数据,并对这些数据进行处理,这样的任务就适合交给一个 long-running task 来处理。 var queue = new BlockingCollection<string>(); Task.Factory.StartNew(() => { while (true) { // BlockingCollection<T>.Take() 方法会阻塞当前线程,直到队列中有数据可以取出。 var input = queue.Take(); Console.WriteLine($"You entered: {input}"); } }, TaskCreationOptions.LongRunning); while (true) { var input = Console.ReadLine(); queue.Add(input); } 在 .NET 中,我们可以使用 Task.Factory.StartNew 方法并传入...
C# 中的“智能枚举”:如何在枚举中增加行为
目录 枚举的基本用法回顾 枚举常见的设计模式运用 介绍 智能枚举 代码示例 业务应用 小结 枚举的基本用法回顾 以下是一个常见的 C# 枚举(enum)的示例: enum Weekday { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } class Program { static void Main(string[] args) { Weekday today = Weekday.Tuesday; Console.WriteLine("今天是" + today.ToString() + "。"); Console.WriteLine("明天是" + (Weekday)(((int)today + 1) % 7) + "。"); Console.WriteLine("昨天是" + (Weekday)(((int)today + 6) % 7) + "。"); } } 在这个示例中,我们定义了一个名为 Weekday 的枚举,其中包括每个星期的日子。然后在 Main 方法中,我们将 today...
【Unity编辑器扩展】扩展Unity工具栏Toolbar, 一键出包/打热更简化打包流程
GF_HybridCLR是基于GameFramework + HybridCLR的一款工具链完善,工作流简洁的游戏框架。拥有标准高效的开发工作流,开箱即用,适用于快速研发。 出包时经常遇到忘记刷新配置表、忘记重新打AB包等等,接入HybridCLR每次打热更包也需要重新编译热更dll,新发App时需要生成桥接函数等。各种琐碎的打包准备工作,一旦忘记操作就容易出故障。基于工作中遇到的痛点,迫切需要写一个傻瓜式一键打包/打热更的工具。 为了这个一键打包工具入口突出,就把它放在Unity编辑器的Toolbar栏,如图: 点击Toolbar栏Build App/Hotfix后打开一键打包/打热更工具: 一,扩展Unity编辑器的菜单栏(Toolbar): Toolbar扩展方法可参考github开源项目: GitHub - marijnz/unity-toolbar-extender: Extend the Unity Toolbar with your own Editor UI code.
U3D编辑器开发&粒子特效/动画预览器示例 - 寡人正在Coding - 博客园
U3D提供了一套拓展编辑器的接口,可以用于直接在编辑器非播放模式运行程序。常用于运行一些工具程序,例如资源管理。在做技能编辑器等工具程序时,也可以使用运行模式接口会比较简单(这样也方便开放游戏创意工坊给玩家)。使用编辑器去做一些渲染相关的预览(如粒子系统,动画预览)会麻烦一点,有时候需要查询和反射使用U3D引擎未暴露的接口。 U3D编辑器相关官方文档查询链接:https://docs.unity3d.com/cn/current/Manual/GUIScriptingGuide.html 这是常用的一些需求和接口,多数的用法比较简单的在这里简单介绍一下。 OnGUI 代码化在视口绘制UI,常用于绘制一些DebugUI,如官方示例: OnGUI官方介绍 using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { void OnGUI () { // 创建背景框 GUI.Box(new Rect(10,10,100,90), "Loader Menu"); //...
C# 11 and .NET 7 Bring Generic Parsing
One of the basic design patterns in .NET is the static Parse function. Virtually every class that can be instantiated from a string representation has one. Yet before C# 11 and .NET 7, there was no way to create an interface that accommodated this. The fundamental problem is before now, abstract interfaces (i.e. the interface keyword) didn’t support static functions. This wasn’t just a C# limitation, the CLR itself didn’t support it before the introduction of the feature.
Enumeration class in C# using records
Photo by Alexander Grey Introduction In more or less all projects I worked on over the years, some kind of Enumeration class has always been used.
Unity 热更新方案之--ILRuntime
做游戏离不开热更新,目前市面上热更新方案用的比较多的是Lua(XLua,ToLua),最近又出现了基于C#的热更新 huatuo(已改名HybridCLR又叫wolong)。来不及学习了,以后用到了再去了解吧。 笔者入行做的第一个项目是利用ILRuntime进行热更新的,当时也是用的稀里糊涂的,一些坑点都是项目主程去解决的。这里做一个简单的回顾。 1.官方简介 ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速、方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新。 2.实现原理 ILRuntime借助Mono.Cecil库来读取DLL的PE信息,以及当中类型的所有信息,最终得到方法的IL汇编码,然后通过内置的IL解译执行虚拟机来执行DLL中的代码来实现热更新功能。 查看ILRuntime源码你会发现,内部有一个很大的switch/case结构,就是针对基本上每一条IL指令码进行解释,同时维护一个Stackframe用于模拟cpu的函数调用的基本操作进行辅助解释。...
【游戏开发教程】BehaviorDesigner插件制作AI行为树(Unity | 保姆级教程 | 动态图演示 | Unity2021最新版)
一、前言 嗨,大家好,我是新发。之前用过Behavior Designer行为树插件,最近又需要用到,我发现网上的教程很多写得不够好,今天我就来写写Behavior Designer行为树的教程吧,希望可以帮到大家。 二、插件下载 1、AssetStore下载 插件可以在AssetStore下载到, 地址:https://assetstore.unity.com/packages/tools/visual-scripting/behavior-designer-behavior-trees-for-everyone-15277 目前最新的版本是1.7.2, 可以在官网查看每个版本的迭代内容: https://opsive.com/news/category/release-notes/behavior-designer-release-notes/ 2、GitCode下载 我放了1.7.1版本的到GitCode上,地址:https://gitcode.net/linxinfa/unitybehaviordesigner 下载下来后,放入你的工程即可,...
Overriding Sealed Methods in C#
Key Takeaways Methods have runtime metadata that we can examine and modify. A method handle can be modified to point to a different method. We can generate machine code in C# and execute it directly. We can override any method this way, including built-in ones. We can use this trick to modify wrappers around the WinAPI (or any other wrappers). A method is a block of code that contains a series of instructions.
Entity Framework Multitenancy
Update: see part two here Introduction Multitenancy is currently a hot topic in web development. Azure, SharePoint, and many other frameworks are offering multitenant options, because it totally makes sense to make a better use of a server by hosting many different services.
优化Unity日志系统的消耗及在ILRuntime模式下双击能跳转到对应的文件行号_unity 日志系统_KindSuper_liu的博客-CSDN博客
Unity的日志控制: 日志系统打开,但是只打印错误日志。这样其他级别的日志就不会有打印消耗。 UnityEngine.Debug.unityLogger.logEnabled = true; Debug.unityLogger.filterLogType = LogType.Error; 但是还是有字符串拼接的消耗。 Conditional属性是一个C#特性,它允许你根据预处理器指令的定义来有条件地执行方法。例如下面的代码: [Conditional("OPEN_MAIN_LOG_LOGWARNING")] public static void Log(object message,Object context) { UnityEngine.Debug.Log(message,context); } 如果没有OPEN_MAIN_LOG_LOGWARNING宏,编译的时候,所有调用Log的方法都会从Dll里去除。因此就没有了字符串拼接的消耗。 Unity Editor下的Debug函数不应该被替换 给ProjectStttings.asset文件修改宏的时候,应该全平台替换。...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Binding
Contact Binding, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack