5 public partial class Matcher<TEntity> {
8 StringBuilder _toStringBuilder;
10 public override string ToString() {
11 if(_toStringCache == null) {
12 if(_toStringBuilder == null) {
13 _toStringBuilder =
new StringBuilder();
15 _toStringBuilder.Length = 0;
16 if(_allOfIndices != null) {
17 appendIndices(_toStringBuilder,
"AllOf", _allOfIndices, componentNames);
19 if(_anyOfIndices != null) {
20 if(_allOfIndices != null) {
21 _toStringBuilder.Append(
".");
23 appendIndices(_toStringBuilder,
"AnyOf", _anyOfIndices, componentNames);
25 if(_noneOfIndices != null) {
26 appendIndices(_toStringBuilder,
".NoneOf", _noneOfIndices, componentNames);
28 _toStringCache = _toStringBuilder.ToString();
31 return _toStringCache;
34 static void appendIndices(StringBuilder sb,
string prefix,
int[] indexArray,
string[] componentNames) {
35 const string separator =
", ";
38 var lastSeparator = indexArray.Length - 1;
39 for (
int i = 0; i < indexArray.Length; i++) {
40 var index = indexArray[i];
41 if(componentNames == null) {
44 sb.Append(componentNames[index]);
47 if(i < lastSeparator) {