This commit is contained in:
unknown 2025-09-15 16:51:51 +08:00
parent 6a4e515562
commit a69e02dd26
29 changed files with 319 additions and 117 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -11,8 +11,8 @@
"dependencies": {
"AvalonEdit": "6.3.0.90",
"FontAwesome.Sharp": "6.3.0",
"Hi.Wpf": "3.1.33",
"HiNc": "3.1.50",
"Hi.Wpf": "3.1.34",
"HiNc": "3.1.51",
"Microsoft.Extensions.Configuration.Json": "9.0.0",
"Microsoft.Extensions.DependencyInjection": "9.0.0",
"Microsoft.Extensions.Hosting": "9.0.0",
@ -1659,39 +1659,39 @@
}
},
"Grpc.Tools/2.66.0": {},
"Hi.Wpf/3.1.33": {
"Hi.Wpf/3.1.34": {
"dependencies": {
"HiDisp": "3.1.38"
"HiDisp": "3.1.39"
},
"runtime": {
"lib/net9.0-windows7.0/Hi.Wpf.dll": {
"assemblyVersion": "3.1.33.0",
"fileVersion": "3.1.33.0"
"assemblyVersion": "3.1.34.0",
"fileVersion": "3.1.34.0"
}
}
},
"HiCbtr/3.1.38": {
"HiCbtr/3.1.39": {
"dependencies": {
"HiDisp": "3.1.38"
"HiDisp": "3.1.39"
},
"runtime": {
"lib/net9.0/HiCbtr.dll": {
"assemblyVersion": "3.1.38.0",
"fileVersion": "3.1.38.0"
"assemblyVersion": "3.1.39.0",
"fileVersion": "3.1.39.0"
}
}
},
"HiDisp/3.1.38": {
"HiDisp/3.1.39": {
"dependencies": {
"HiGeom": "3.1.34",
"HiGeom": "3.1.35",
"System.Configuration.ConfigurationManager": "9.0.9",
"System.Drawing.Common": "9.0.9",
"System.Resources.Extensions": "9.0.9"
},
"runtime": {
"lib/net9.0/HiDisp.dll": {
"assemblyVersion": "3.1.38.0",
"fileVersion": "3.1.38.0"
"assemblyVersion": "3.1.39.0",
"fileVersion": "3.1.39.0"
}
},
"native": {
@ -1706,7 +1706,7 @@
}
}
},
"HiGeom/3.1.34": {
"HiGeom/3.1.35": {
"dependencies": {
"Google.Protobuf": "3.28.3",
"Grpc.AspNetCore": "2.66.0",
@ -1717,8 +1717,8 @@
},
"runtime": {
"lib/net9.0/HiGeom.dll": {
"assemblyVersion": "3.1.34.0",
"fileVersion": "3.1.34.0"
"assemblyVersion": "3.1.35.0",
"fileVersion": "3.1.35.0"
}
},
"resources": {
@ -1730,27 +1730,27 @@
}
}
},
"HiLicense/3.1.32": {
"HiLicense/3.1.33": {
"dependencies": {
"HiGeom": "3.1.34"
"HiGeom": "3.1.35"
},
"runtime": {
"lib/net9.0/HiLicense.dll": {
"assemblyVersion": "3.1.32.0",
"fileVersion": "3.1.32.0"
"assemblyVersion": "3.1.33.0",
"fileVersion": "3.1.33.0"
}
}
},
"HiMech/3.1.42": {
"HiMech/3.1.43": {
"dependencies": {
"CommandLineParser": "2.9.1",
"HiCbtr": "3.1.38",
"HiCbtr": "3.1.39",
"Microsoft.CodeAnalysis.CSharp.Scripting": "4.14.0"
},
"runtime": {
"lib/net9.0/HiMech.dll": {
"assemblyVersion": "3.1.42.0",
"fileVersion": "3.1.42.0"
"assemblyVersion": "3.1.43.0",
"fileVersion": "3.1.43.0"
}
},
"resources": {
@ -1765,20 +1765,20 @@
}
}
},
"HiNc/3.1.50": {
"HiNc/3.1.51": {
"dependencies": {
"Google.Protobuf": "3.28.3",
"Grpc.AspNetCore": "2.66.0",
"Grpc.Net.Client": "2.66.0",
"HiLicense": "3.1.32",
"HiMech": "3.1.42",
"HiUniNc": "3.1.39",
"HiLicense": "3.1.33",
"HiMech": "3.1.43",
"HiUniNc": "3.1.40",
"System.IO.Pipelines": "9.0.9"
},
"runtime": {
"lib/net9.0/HiNc.dll": {
"assemblyVersion": "3.1.50.0",
"fileVersion": "3.1.50.0"
"assemblyVersion": "3.1.51.0",
"fileVersion": "3.1.51.0"
}
},
"resources": {
@ -1790,14 +1790,14 @@
}
}
},
"HiUniNc/3.1.39": {
"HiUniNc/3.1.40": {
"dependencies": {
"HiMech": "3.1.42"
"HiMech": "3.1.43"
},
"runtime": {
"lib/net9.0/HiUniNc.dll": {
"assemblyVersion": "3.1.39.0",
"fileVersion": "3.1.39.0"
"assemblyVersion": "3.1.40.0",
"fileVersion": "3.1.40.0"
}
}
},
@ -2442,61 +2442,61 @@
"path": "grpc.tools/2.66.0",
"hashPath": "grpc.tools.2.66.0.nupkg.sha512"
},
"Hi.Wpf/3.1.33": {
"Hi.Wpf/3.1.34": {
"type": "package",
"serviceable": true,
"sha512": "sha512-2Jjg/i72DlpCa++uo02NomT7KlZaeuwnnohnyLg7B/CRZzNH5oIghXD3WBD7tccrYACBL/C3nAkVOoe/Qn5fIw==",
"path": "hi.wpf/3.1.33",
"hashPath": "hi.wpf.3.1.33.nupkg.sha512"
"sha512": "sha512-xYj7sQoFAWJOlnu8jMNMo33Fu0PL/wIyUD8WOZWRv65k3uhfKId+fvlod/bblp6sEJGbPpjvoTYqjSICIWCf2Q==",
"path": "hi.wpf/3.1.34",
"hashPath": "hi.wpf.3.1.34.nupkg.sha512"
},
"HiCbtr/3.1.38": {
"HiCbtr/3.1.39": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KmtkLiO6CRnPKvhHw93NEcjp5bwlSh5Ze+8aBVDuTE82LHONl9iBsOPBl+FiGviBYYWstONNd0qoPCP1dge1SQ==",
"path": "hicbtr/3.1.38",
"hashPath": "hicbtr.3.1.38.nupkg.sha512"
"sha512": "sha512-4UFiWpjbDLzE+6ph9rZ5u9ntvxRmbkwxlqBHDbdbDggLpdTizvsCqsehWcw1l9/U/DS7T8r5zHoBbkgLbAXX1g==",
"path": "hicbtr/3.1.39",
"hashPath": "hicbtr.3.1.39.nupkg.sha512"
},
"HiDisp/3.1.38": {
"HiDisp/3.1.39": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xCVii3hZxlwTVFgbq7ayJrarA/eVmHlvy9+o0+o09sNy4izv0Iq9Jw15RUGadkRxYnuFWpcHmkxxq9M3WW+U3A==",
"path": "hidisp/3.1.38",
"hashPath": "hidisp.3.1.38.nupkg.sha512"
"sha512": "sha512-z9p0msRH8f3OfV/vK4vRhtfPafCDRXhXgiqQwEbskZRg+hjIiXU4xqwTy5M8LwSHk9ht1d6J9HdTwtUjjR3Z+A==",
"path": "hidisp/3.1.39",
"hashPath": "hidisp.3.1.39.nupkg.sha512"
},
"HiGeom/3.1.34": {
"HiGeom/3.1.35": {
"type": "package",
"serviceable": true,
"sha512": "sha512-8H7qESENjnZ/Le99F59flU0KHPB8r1D87CcwvVT9L2yEql6okHBfHgZAWOgjc45L0VlbsE3iiH7D6hHRwem6KQ==",
"path": "higeom/3.1.34",
"hashPath": "higeom.3.1.34.nupkg.sha512"
"sha512": "sha512-aBkdVedhLK5CkilKPdNIIch44/1+kR8w7LaG8JU4iJc9fAV4yHxd5KriAekzmWe+3ujmkmM8kUCKC0Y71ij+fw==",
"path": "higeom/3.1.35",
"hashPath": "higeom.3.1.35.nupkg.sha512"
},
"HiLicense/3.1.32": {
"HiLicense/3.1.33": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Vj9q4V9SMcRnl29W2fIKHlSt7aoTWGE2YqEkQOadKXo4jSCHYLn+UBquheIOW4t2HwpWmGDm4HH2Nm06MRA9Mw==",
"path": "hilicense/3.1.32",
"hashPath": "hilicense.3.1.32.nupkg.sha512"
"sha512": "sha512-S0XY8RhQOKQkX3Abfr8jkcjqoLguiFXzwA3QTY+HgYtkWLzC/IaxHzTrlLT1HijrCzHyb3qcR+SNEwRqH8mBTQ==",
"path": "hilicense/3.1.33",
"hashPath": "hilicense.3.1.33.nupkg.sha512"
},
"HiMech/3.1.42": {
"HiMech/3.1.43": {
"type": "package",
"serviceable": true,
"sha512": "sha512-iM969zc3NHLdWVRo6JfCRIcqZN8S3rjfcXgApzeWx8z5We/5ohct5PCnVE9fhmobSvnmvkif8uL7Lhvk9JyJCA==",
"path": "himech/3.1.42",
"hashPath": "himech.3.1.42.nupkg.sha512"
"sha512": "sha512-vQBXD4UkoPoduUnz4D9v+gEb4FuZZ9W5kgKE3+WeF8q7FHDLYue67x7EX9tm5t767Z8yH9sX6ESd3ve9tX8GIA==",
"path": "himech/3.1.43",
"hashPath": "himech.3.1.43.nupkg.sha512"
},
"HiNc/3.1.50": {
"HiNc/3.1.51": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NEP4r8DFMMbIdXklf70gcgpAIueGDPbhltS3vVhZtmI7hK4neEKdrt4eBFUip9SpeEYxmerru1MCiHNthynBOg==",
"path": "hinc/3.1.50",
"hashPath": "hinc.3.1.50.nupkg.sha512"
"sha512": "sha512-G9jo2iHczdwCIPydYHt2NGQCBF+0i1DaX8Gcsrmx3AaijlhbP7+SkzMmOTgSDqHmmoxuDaYY18NOE8TVXQ7dIw==",
"path": "hinc/3.1.51",
"hashPath": "hinc.3.1.51.nupkg.sha512"
},
"HiUniNc/3.1.39": {
"HiUniNc/3.1.40": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5bYHSpfuGLTmW3kz3u5HXtgAVmrAfdgaWKykbqxQULoutZ7hN1nLn6wvg05VZL3dYIf2UKfuGgzDsEDcvvFbNQ==",
"path": "hiuninc/3.1.39",
"hashPath": "hiuninc.3.1.39.nupkg.sha512"
"sha512": "sha512-o7xlqbvWdfgjiZKcyZcE+AMBCSxOQA80T5ws/U2dw5kOZ4tjkEYEwSsFF655fA+LTykVm+z70lpBUgXARvPYIA==",
"path": "hiuninc/3.1.40",
"hashPath": "hiuninc.3.1.40.nupkg.sha512"
},
"MathNet.Numerics/5.0.0": {
"type": "package",

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -227,7 +227,8 @@ Class CsvRunner
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Configuration for CSV Runner.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">

View File

@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CsvRunnerConfig | HiAPI-C# 2025 ">
<meta name="description" content="Configuration class for CSV Runner.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@ -97,11 +97,12 @@ Class CsvRunnerConfig
<dl><dt>Assembly</dt><dd>HiNc.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown summary"><p>Configuration class for CSV Runner.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class CsvRunnerConfig</code></pre>
<pre><code class="lang-csharp hljs">public class CsvRunnerConfig : IMakeXmlSource</code></pre>
</div>
@ -115,6 +116,12 @@ Class CsvRunnerConfig
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
@ -173,6 +180,70 @@ Class CsvRunnerConfig
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor_" data-uid="Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor*"></a>
<h3 id="Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor" data-uid="Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor">
CsvRunnerConfig()
</h3>
<div class="markdown level1 summary"><p>Default constructor.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CsvRunnerConfig()</code></pre>
</div>
<a id="Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor_" data-uid="Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor*"></a>
<h3 id="Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor_System_Xml_Linq_XElement_" data-uid="Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor(System.Xml.Linq.XElement)">
CsvRunnerConfig(XElement)
</h3>
<div class="markdown level1 summary"><p>Constructor from XML.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CsvRunnerConfig(XElement src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement">XElement</a></dt>
<dd><p>XML element</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
@ -375,7 +446,9 @@ Class CsvRunnerConfig
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Parsing dictionary for custom field parsing.
Note: This dictionary cannot be serialized to XML as it contains functions.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@ -495,6 +568,93 @@ Class CsvRunnerConfig
<a id="Hi_Numerical_FilePlayers_CsvRunnerConfig_XName_" data-uid="Hi.Numerical.FilePlayers.CsvRunnerConfig.XName*"></a>
<h3 id="Hi_Numerical_FilePlayers_CsvRunnerConfig_XName" data-uid="Hi.Numerical.FilePlayers.CsvRunnerConfig.XName">
XName
</h3>
<div class="markdown level1 summary"><p>Name for XML IO.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string XName { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Numerical_FilePlayers_CsvRunnerConfig_MakeXmlSource_" data-uid="Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource*"></a>
<h3 id="Hi_Numerical_FilePlayers_CsvRunnerConfig_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(System.String,System.String,System.Boolean)">
MakeXmlSource(string, string, bool)
</h3>
<div class="markdown level1 summary"><p>Creates an XML representation of the object.
This method may also generate additional resources such as related files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The base directory for resolving relative paths</p>
</dd>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path for the XML source</p>
</dd>
<dt><code>exhibitionOnly</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>if true, the extended file creation is suppressed.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement">XElement</a></dt>
<dd><p>An XML element representing the object's state</p>
</dd>
</dl>
<h4 class="section" id="Hi_Numerical_FilePlayers_CsvRunnerConfig_MakeXmlSource_System_String_System_String_System_Boolean__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The <code class="paramref">baseDirectory</code> is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.</p>
</div>
</article>

View File

@ -100,7 +100,8 @@ Classes
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Numerical.FilePlayers.CsvRunnerConfig.html">CsvRunnerConfig</a></dt>
<dd></dd>
<dd><p>Configuration class for CSV Runner.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Numerical.FilePlayers.NcRunner.html">NcRunner</a></dt>

View File

@ -87,7 +87,7 @@
<article data-uid="">
<h1 id="about-xml-io">About XML IO</h1>
<p>The XML IO design pattern in Hi Framework is based on <a class="xref" href="../../../../api/Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a> interface and <a class="xref" href="../../../../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a> class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format.</p>
<p>The XML IO design pattern in HiNc Framework is based on <a class="xref" href="../../../../api/Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a> interface and <a class="xref" href="../../../../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a> class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format.</p>
<p>Don't serialize the runtime member object like <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func&lt;TResult&gt;</a> or <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action">Action</a> either cache object. The runtime objects can be optionally sent by the res part on the XFactory Registration or set by the other host or dependent object. If it is set by the other object, then there is nothing can do to it in the XML IO procedure.</p>
<h2 id="core-components">Core Components</h2>
<h3 id="imakexmlsource-interface">IMakeXmlSource Interface</h3>
@ -95,7 +95,7 @@
<h3 id="xfactory-registration">XFactory Registration</h3>
<p>Every class implementing IMakeXmlSource must:</p>
<ol>
<li>Define a static XName property matching the class name</li>
<li>Define a static XName property matching the class name.</li>
<li>Register itself in the static constructor using XFactory.Regs.Add</li>
<li>Implement XML serialization and deserialization logic</li>
</ol>
@ -271,41 +271,12 @@ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibit
}
</code></pre><h2 id="best-practices">Best Practices</h2>
<ol>
<li><strong>XName</strong>: Always define static XName property matching the class name</li>
<li><strong>Registration</strong>: Register in static constructor using XFactory.Regs.Add</li>
<li><strong>XName</strong>: Always define static XName property matching the class name.</li>
<li><strong>Registration</strong>: Register in static constructor using <a class="xref" href="../../../../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a>.Regs</li>
<li>Call the XName such like <code>_ = CalleeClass.XName;</code> in the caller class static initailization field so that the registration takes effect before calling the Callee construction by <a class="xref" href="../../../../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a>.</li>
<li><strong>Error Handling</strong>: Use appropriate <a class="xref" href="../../../../api/Hi.Common.XmlUtils.GenMode.html">GenMode</a></li>
<li><strong>Legacy Support</strong>: Maintain backward compatibility when needed</li>
<li><strong>Documentation</strong>: Include XML comments for properties and methods</li>
</ol>
<h2 id="generation-modes">Generation Modes</h2>
<p>The <a class="xref" href="../../../../api/Hi.Common.XmlUtils.GenMode.html">GenMode</a> enumeration provides:</p>
<ul>
<li><a class="xref" href="../../../../api/Hi.Common.XmlUtils.GenMode.html#Hi_Common_XmlUtils_GenMode_None">None</a></li>
<li><a class="xref" href="../../../../api/Hi.Common.XmlUtils.GenMode.html#Hi_Common_XmlUtils_GenMode_Catch">Catch</a></li>
<li><a class="xref" href="../../../../api/Hi.Common.XmlUtils.GenMode.html#Hi_Common_XmlUtils_GenMode_Rebase">Rebase</a></li>
<li><a class="xref" href="../../../../api/Hi.Common.XmlUtils.GenMode.html#Hi_Common_XmlUtils_GenMode_Default">Default</a></li>
</ul>
<h2 id="common-usage-patterns">Common Usage Patterns</h2>
<ol>
<li><strong>Simple Object Generation</strong>:</li>
</ol>
<pre><code class="lang-csharp">var obj = XFactory.Gen&lt;MyType&gt;(xmlElement, baseDir, null, GenMode.Default);
</code></pre>
<ol start="2">
<li><strong>File-Based Generation</strong>:</li>
</ol>
<pre><code class="lang-csharp">var obj = XFactory.GenByFile&lt;MyType&gt;(baseDir, relativeFile, GenMode.Default);
</code></pre>
<ol start="3">
<li><strong>XML Source and File Generation</strong>:</li>
</ol>
<pre><code class="lang-csharp">var xmlSourceAndFile = XFactory.GenXmlSourceAndFile&lt;MyType&gt;(xmlElement, baseDir, null, GenMode.Default);
</code></pre>
<ol start="4">
<li><strong>Hierarchical Object Generation</strong>:</li>
</ol>
<pre><code class="lang-csharp">var childObj = XFactory.GenByChild&lt;IStructureMaterial&gt;(parentElement, baseDir, null, GenMode.Default);
</code></pre>
</article>

View File

@ -90,13 +90,13 @@
<h2 id="overview">Overview</h2>
<p>A connection-scoped indexing pattern for referencing backend objects across hierarchical SignalR hub connections.</p>
<h2 id="core-components">Core Components</h2>
<p><strong>&lt;xref:HiNC_2025_webapi.Common.DictionaryService&gt;</strong>: Manages connection-scoped index dictionaries</p>
<p><code>DictionaryService</code>: Manages connection-scoped index dictionaries</p>
<ul>
<li>First layer key: Hub connectionId (auto-generated by SignalR)</li>
<li>Second layer key: LocalId (resource name)</li>
<li>Value: References to backend objects (functions, getters/setters)</li>
</ul>
<p><strong>&lt;xref:HiNC_2025_webapi.Common.DictionaryHub&gt;</strong>: Base hub that auto-cleans index entries on disconnect</p>
<p><code>DictionaryHub</code>: Base hub that auto-cleans index entries on disconnect</p>
<h2 id="architecture">Architecture</h2>
<pre><code>Root-Hub
└── Child-Hub - has parent's connectionId

View File

@ -131,6 +131,8 @@ catch (Exception ex)
<p>See <a href="widget/gui-file-path-assignment.html">GUI File Path Assignment</a>.</p>
<h2 id="numeric-inputoutput-handling">Numeric Input/Output Handling</h2>
<p>Implement a <code>numeric-utils.js</code> module to handle special floating-point values in web forms. See <a href="widget/numeric-io-utilities.html">Numeric Input/Output Utilities</a> for implementation details.</p>
<h2 id="dictionaryservice-pattern-for-hierarchical-components">DictionaryService Pattern for Hierarchical Components</h2>
<p>For web applications with hierarchical SignalR hub connections, use the <a href="common/dictionary-service-pattern.html">DictionaryService and DictionaryHub Pattern</a> to manage connection-scoped object indexing. This pattern provides isolation between components, supports nested components without conflicts, and ensures automatic cleanup of resources on disconnect.</p>
<h2 id="translation-remarks">Translation Remarks</h2>
<p>See <a href="translation-remarks.html">Translation Remarks</a>.</p>

View File

@ -29,6 +29,16 @@
<li>
<a href="build-hinc/general-rules.html" name="" title="General Rules">General Rules</a>
</li>
<li>
<span class="expand-stub"></span>
<a href="build-hinc/index.html" name="" title="Common Patterns">Common Patterns</a>
<ul class="nav level3">
<li>
<a href="build-hinc/common/dictionary-service-pattern.html" name="" title="DictionaryService and DictionaryHub Pattern">DictionaryService and DictionaryHub Pattern</a>
</li>
</ul>
</li>
<li>
<a href="build-hinc/initialize-hiapi.html" name="" title="Initialize HiAPI">Initialize HiAPI</a>
</li>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -10144,7 +10144,7 @@
"Uid": null,
"IsMRef": true,
"Title": "Hi.Numerical.FilePlayers.CsvRunnerConfig",
"Summary": null
"Summary": "<p sourcefile=\"api/Hi.Numerical.FilePlayers.CsvRunnerConfig.yml\" sourcestartlinenumber=\"1\">Configuration class for CSV Runner.</p>\n"
},
{
"type": "ManagedReference",

View File

@ -115610,6 +115610,34 @@ references:
commentId: T:Hi.Numerical.FilePlayers.CsvRunnerConfig
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig
nameWithType: CsvRunnerConfig
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor
name: CsvRunnerConfig()
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor
commentId: M:Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor
name.vb: New()
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CsvRunnerConfig()
fullName.vb: Hi.Numerical.FilePlayers.CsvRunnerConfig.New()
nameWithType: CsvRunnerConfig.CsvRunnerConfig()
nameWithType.vb: CsvRunnerConfig.New()
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor(System.Xml.Linq.XElement)
name: CsvRunnerConfig(XElement)
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor_System_Xml_Linq_XElement_
commentId: M:Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor(System.Xml.Linq.XElement)
name.vb: New(XElement)
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CsvRunnerConfig(System.Xml.Linq.XElement)
fullName.vb: Hi.Numerical.FilePlayers.CsvRunnerConfig.New(System.Xml.Linq.XElement)
nameWithType: CsvRunnerConfig.CsvRunnerConfig(XElement)
nameWithType.vb: CsvRunnerConfig.New(XElement)
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor*
name: CsvRunnerConfig
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor_
commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor
isSpec: "True"
name.vb: New
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CsvRunnerConfig
fullName.vb: Hi.Numerical.FilePlayers.CsvRunnerConfig.New
nameWithType: CsvRunnerConfig.CsvRunnerConfig
nameWithType.vb: CsvRunnerConfig.New
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefixTag
name: CutterLocationPrefixTag
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_CutterLocationPrefixTag
@ -115688,6 +115716,22 @@ references:
isSpec: "True"
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefixTag
nameWithType: CsvRunnerConfig.MachineCoordinatePrefixTag
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(System.String,System.String,System.Boolean)
name: MakeXmlSource(string, string, bool)
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MakeXmlSource_System_String_System_String_System_Boolean_
commentId: M:Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(System.String,System.String,System.Boolean)
name.vb: MakeXmlSource(String, String, Boolean)
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(string, string, bool)
fullName.vb: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(String, String, Boolean)
nameWithType: CsvRunnerConfig.MakeXmlSource(string, string, bool)
nameWithType.vb: CsvRunnerConfig.MakeXmlSource(String, String, Boolean)
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource*
name: MakeXmlSource
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MakeXmlSource_
commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource
isSpec: "True"
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource
nameWithType: CsvRunnerConfig.MakeXmlSource
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.ParsingDictionary
name: ParsingDictionary
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_ParsingDictionary
@ -115740,6 +115784,19 @@ references:
isSpec: "True"
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.ToolIdTag
nameWithType: CsvRunnerConfig.ToolIdTag
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.XName
name: XName
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_XName
commentId: P:Hi.Numerical.FilePlayers.CsvRunnerConfig.XName
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.XName
nameWithType: CsvRunnerConfig.XName
- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.XName*
name: XName
href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_XName_
commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.XName
isSpec: "True"
fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.XName
nameWithType: CsvRunnerConfig.XName
- uid: Hi.Numerical.FilePlayers.IControlRunner
name: IControlRunner
href: api/Hi.Numerical.FilePlayers.IControlRunner.html

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.