## 介绍 - 基本MVVM代码结构、包括Command绑定控件 - 实现单例模式 - 实现C#驱动Go项目 - View: - MordenWPF美化控件 - Hardcodet实现WPF系统托盘效果 - 代码实现图标闪烁 ## CSharp using Go > 安装 MinGW [https://github.com/niXman/mingw-builds-binaries](https://github.com/niXman/mingw-builds-binaries) > 参考 [MinGW-W64 下载、安装与配置(支持最新版的GCC,目前 GCC 13.2.0)](https://blog.csdn.net/B11050729/article/details/132176767) > [https://github.com/Baozisoftware/go-dll/wiki](https://github.com/Baozisoftware/go-dll/wiki) ```Go package main import ( "C" "zggsong.cn/scadatool/server" ) func main() { run() } //export run func run() string { // 启动服务 server.StartServer() return "success" } ``` ```C# /// /// 引入Go项目库 /// /// [DllImport("scadatool_go.dll", EntryPoint = "run")] extern static GoString run(); #本项目中的代码示例 string result = GoCSharpHelper.Instance().GoStringToCSharpString(run()); ``` **Go字符串乱码问题** ```C# /// /// 转换Go string类型为C# String /// public struct GoString { public IntPtr p; public int n; public GoString(IntPtr n1, int n2) { p = n1; n = n2; } } public string GoStringToCSharpString(GoString goString) { byte[] bytes = new byte[goString.n]; for (int i = 0; i < goString.n; i++) { bytes[i] = Marshal.ReadByte(goString.p, i); } string result = Encoding.UTF8.GetString(bytes); return result; } ```