我正在处理的程序有一个适当命名为"Error"的日志记录功能,用于通知错误而不会导致程序崩溃,但是,我想包含一个堆栈跟踪,以便更容易调试这些非致命错误.我的第一直觉是使用System.Diagnostics.StackTrace,遗憾的是PCL没有.
然后,我试图抛出并立即捕获异常.
try { throw new Exception(); }
catch (Exception ex) { return ex.StackTrace; }
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只提供了调用堆栈的顶层:因为它没有解开堆栈,所以它不提供任何有用的信息.所以,我的问题是:如何在ac#PCL函数中获得堆栈跟踪而不会抛出错误并将其捕获到堆栈的底部?我更愿意将代码完全保留在PCL中,并避免使用抽象和平台特定的实现代码来实现这么简单的事情.
编辑为对注释的响应:`throw new Exception(ex)仅向堆栈跟踪添加另一个层,因此它在堆栈跟踪功能中有两行但仍无法检索完整跟踪.
我知道这是一个奇怪的请求,但我需要混淆原始的c#源代码.
虽然这是一个坏主意,但c#代码将通过CSharpCodeProvider在客户端编译.c#中是否存在任何用于混淆源代码的类?或者,是否有第三方图书馆这样做?
我曾考虑使用Roslyn和手动变量重命名,但我找不到任何有关如何做到这一点的信息.有谁知道如何使用Roslyn重命名变量(并加载解决方案)?
我尝试过手动语法分析器,但效果不佳.
到目前为止我做了什么:
删除了所有评论.
删除了所有换行符和空格.
将所有不同项目中的所有文件放入一个包含随机25个字符的字母数字名称的文件夹中.
在代码行中添加了随机注释.不会阻止任何人,但让我头疼的阅读public /*SJKDSJKDJ398sLAjljKKxklw*/int /*SDSDSJCJKIORIO*/ privateServerKey = /*SDKSDKSDFKJSFKJ*/ ...
我正在尝试在一系列凸多边形上使用路径查找,而不是航点。更复杂的是,多边形是由用户制作的,并且可能具有不一致的顶点。例如:

我们知道对象是 X 宽 Y 深,并且多边形在某些位置具有顶点。是否有特定的算法可以找到到达目标的最快方法,同时将整个对象保持在多边形中(如果我理解正确,A* 仅适用于航点)?您如何处理不是同一对象但位于同一位置的顶点?
编辑:多边形是凸的;它是 2 个独立的多边形,边在一条线上。另外,您如何实现*寻路,因为基于节点的系统在“无限”分辨率多边形中不起作用?