public static bool IsReturn <T>(this IInterpetedResult <T> self, out IInterpetedAnyType returned, out T value)
            where T : IInterpetedAnyType
        {
            if (self is IInterpetedResultNotReturn <T> && self is IInterpetedResultReturn <T> )
            {
                throw new Exception("should not be both!");
            }

            returned = default;
            value    = default;

            if (self is IInterpetedResultNotReturn <T> notReturn)
            {
                value = notReturn.Value;
                return(false);
            }

            if (self is IInterpetedResultReturn <T> toReturn)
            {
                returned = toReturn.Value;
                return(true);
            }

            throw new Exception("should be one!");
        }
示例#2
0
            public InterpetedMember(IVerifiableType verifiableType, IInterpetedAnyType value, IRunTimeAnyRoot root) : base(root)
            {
                if (value == null)
                {
                    throw new ArgumentNullException(nameof(value));
                }

                Value = value;
                this.VerifiableType = verifiableType ?? throw new ArgumentNullException(nameof(verifiableType));
            }
示例#3
0
            public bool TrySet(IInterpetedAnyType o)
            {
                //  having to find TransformerExtensions.NewConversionContext is cognative load
                // and I always use TransformerExtensions.NewConversionContext
                // what even is the point of passing it
                var incommingType = o.Convert(TransformerExtensions.NewConversionContext());

                // also don't like passing in false here
                // forces me to know too much about that is going on under the hood
                if (VerifiableType.TheyAreUs(incommingType, false))
                {
                    Set(o.Cast <T>());
                    return(true);
                }
                return(false);
            }
示例#4
0
 public RunTimeAnyRootEntry(IInterpetedAnyType interpetedType, IVerifiableType compileTimeType)
 {
     InterpetedType  = interpetedType ?? throw new ArgumentNullException(nameof(interpetedType));
     CompileTimeType = compileTimeType ?? throw new ArgumentNullException(nameof(compileTimeType));
 }
 public static IInterpetedResultReturn <T> Return <T>(IInterpetedAnyType value)
     where T : IInterpetedAnyType
 {
     return(new IsReturn <T>(value));
 }
 public IsReturn(IInterpetedAnyType value)
 {
     Value = value ?? throw new ArgumentNullException(nameof(value));
 }
示例#7
0
 public static IInterpetedMember <IInterpetedAnyType> AnyMember(IInterpetedAnyType t)
 => Member(new AnyType(), t);
示例#8
0
 public static Func <IRunTimeAnyRoot, RunTimeAnyRootEntry> MemberIntention(IVerifiableType type, IInterpetedAnyType t)
 // TODO check that IVerifiableType is T
 => root => new RunTimeAnyRootEntry(new InterpetedMember(type, t, root), type);
示例#9
0
 public static IInterpetedMember Member(IVerifiableType type, IInterpetedAnyType t)
 => Root(new Func <IRunTimeAnyRoot, RunTimeAnyRootEntry>[] { MemberIntention(type, t) }).Has <IInterpetedMember>();
示例#10
0
 public void Set(IInterpetedAnyType o)
 {
     Value = o;
 }