I removed the inheritance from the Combinators class
static class Combinators {
. # iterator, , Enumerator; yield.
: :
StringBuilder sb = new StringBuilder();
foreach ( var ch in Util.AsEnumerable<char>(typeof(Combinators)) )
sb.AppendLine(ch.ToString());
: # ( ):
static public class Util {
static public IEnumerable<T> AsEnumerable<T>(Type t)
{
if (ReferenceEquals(null, t))
yield break;
foreach (T val in t.GetFields().Where(f => f.IsLiteral).Select(f => f.GetValue(null)).OfType<T>())
yield return val;
}
}
StringBuilder, Combinator:
>
+
~
()
( : - , , )
: , , StringBuilder:
StringBuilder sb = new StringBuilder();
foreach (var ch in new Combinators().AsEnumerable<char>())
sb.AppendLine(ch.ToString());
: # :
static public class EXTENSIONS
{
static public IEnumerable<T> AsEnumerable<T>(this object thisObj) {
if (ReferenceEquals(null, thisObj))
yield break;
foreach (T val in thisObj.GetType().GetFields().Where(f => f.IsLiteral).Select(f => f.GetValue(null)).OfType<T>())
yield return val;
}
}