コード例 #1
0
ファイル: DurableType.cs プロジェクト: jtark/Totem
        public static bool TryFrom(string prefix, Type declaredType, out DurableType type)
        {
            type = DurablePrefix.TryFrom(prefix, out var parsedPrefix)
        ? CreateType(parsedPrefix, declaredType)
        : null;

            return(type != null);
        }
コード例 #2
0
ファイル: DurableTypeKey.cs プロジェクト: jtark/Totem
        public static bool TryFrom(string prefix, string name, out DurableTypeKey key)
        {
            key = DurablePrefix.TryFrom(prefix, out var parsedPrefix) && TypeName.TryFrom(name, out var parsedName)
        ? new DurableTypeKey(parsedPrefix, parsedName)
        : null;

            return(key != null);
        }
コード例 #3
0
ファイル: DurableType.cs プロジェクト: jtark/Totem
        public static bool TryFrom(DurablePrefix prefix, Type declaredType, out DurableType type)
        {
            type = IsDurable(declaredType)
        ? CreateType(prefix, declaredType)
        : null;

            return(type != null);
        }
コード例 #4
0
ファイル: DurableType.cs プロジェクト: jtark/Totem
        public static DurableType From(DurablePrefix prefix, Type declaredType)
        {
            if (!TryFrom(prefix, declaredType, out var type))
            {
                throw new ArgumentException($"Type is not durable: {declaredType}", nameof(declaredType));
            }

            return(type);
        }
コード例 #5
0
ファイル: DurableType.cs プロジェクト: jtark/Totem
        //
        // Details
        //

        static bool TryGetKey(Type declaredType, out DurableTypeKey key)
        {
            var value =
                declaredType.GetCustomAttribute <DurablePrefixAttribute>()?.Prefix
                ?? declaredType.Assembly.GetCustomAttribute <DurablePrefixAttribute>()?.Prefix
                ?? "";

            key = DurablePrefix.TryFrom(value, out var prefix)
        ? DurableTypeKey.From(prefix, TypeName.From(declaredType))
        : null;

            return(key != null);
        }
コード例 #6
0
ファイル: DurableTypeKey.cs プロジェクト: jtark/Totem
        public static bool TryFrom(string value, out DurableTypeKey key)
        {
            var parts = (value ?? "").Split(':');

            if (parts.Length == 1 && TypeName.TryFrom(parts[0], out var name))
            {
                key = new DurableTypeKey(DurablePrefix.None, name);
            }
            else if (parts.Length == 2 &&
                     DurablePrefix.TryFrom(parts[0], out var prefix) &&
                     TypeName.TryFrom(parts[1], out name))
            {
                key = new DurableTypeKey(prefix, name);
            }
            else
            {
                key = null;
            }

            return(key != null);
        }
コード例 #7
0
ファイル: DurableType.cs プロジェクト: jtark/Totem
 public static DurableType From(string prefix, Type declaredType) =>
 From(DurablePrefix.From(prefix), declaredType);
コード例 #8
0
ファイル: DurableType.cs プロジェクト: jtark/Totem
 static DurableType CreateType(DurablePrefix prefix, Type declaredType) =>
 new DurableType(
     DurableTypeKey.From(prefix, TypeName.From(declaredType)),
     declaredType);
コード例 #9
0
ファイル: DurableTypeKey.cs プロジェクト: jtark/Totem
 public static DurableTypeKey From(DurablePrefix prefix, TypeName name) =>
 new DurableTypeKey(prefix, name);
コード例 #10
0
ファイル: DurableTypeKey.cs プロジェクト: jtark/Totem
 public static DurableTypeKey From(string prefix, string name) =>
 From(DurablePrefix.From(prefix), TypeName.From(name));
コード例 #11
0
ファイル: DurableTypeKey.cs プロジェクト: jtark/Totem
 public static DurableTypeKey From(string prefix, TypeName name) =>
 From(DurablePrefix.From(prefix), name);
コード例 #12
0
ファイル: DurableTypeKey.cs プロジェクト: jtark/Totem
 DurableTypeKey(DurablePrefix prefix, TypeName name)
 {
     Prefix = prefix;
     Name   = name;
 }