예제 #1
0
        public void UpdateTextDraw()
        {
            float  distanceFromLeader;
            var    leader          = Members[0];
            var    numberOfMembers = Members.Count;
            string furthestMemberName;

            if (Members.Count > 1)
            {
                var furthestMember = GetFurthestMember();
                furthestMemberName = furthestMember.Name;
                distanceFromLeader = GetDistanceBetweenMembers(leader, furthestMember);
            }
            else
            {
                furthestMemberName = " - ";
                distanceFromLeader = 0.0f;
            }

            LeaderText.Text =
                $"Members: ~g~{numberOfMembers}~w~, Furthest member: ~g~{furthestMemberName}~w~, Distance: ~r~{distanceFromLeader}~w~";
            LeaderText.Show(leader);

            foreach (var member in Members.Where(member => member != Members[0]))
            {
                distanceFromLeader = GetDistanceBetweenMembers(leader, member);
                MemberText.Text    =
                    $"Leader: ~r~{leader.Name}~w~, distance: ~r~{distanceFromLeader}~w~, members: ~r~{numberOfMembers}~w~";
                MemberText.Show(member);
            }
        }
예제 #2
0
        public override string Visit(MemberText memberText)
        {
            string typeName = memberText.IsUnicode ? "nvarchar" : "varchar";

            string lengthString = memberText.Length == -1 ? "MAX" : memberText.Length.ToString();

            return(typeName + "(" + lengthString + ")");
        }
예제 #3
0
 public abstract TResult Visit(MemberText memberText);
예제 #4
0
 public static string SignatureOfMethod <TArg0, TResult>(Expression <Func <TArg0, TResult> > methodExpr)
 => MemberText.GetMethodSignatureText(expr: methodExpr);
예제 #5
0
        // TODO: Put strings into the resources.
        //
        public static MethodInfo GetMethod(this Type type, string name, Type[] parameterTypes = default, bool throwIfNotFound = default)
        {
            if (type is null)
            {
                throw new ArgumentNullException(paramName: nameof(type));
            }
            else if (name is null)
            {
                throw new ArgumentNullException(paramName: nameof(name));
            }
            else if (string.Empty == name)
            {
                throw new ArgumentException(paramName: nameof(name), message: "Cannot be an empty string.");
            }
            //
            var result = type.GetMethod(name: name, types: parameterTypes ?? Type.EmptyTypes);

            if (result is null && throwIfNotFound)
            {
                throw new MissingMemberException(string.Format($"Method not found.{Environment.NewLine}\tMethod:{Environment.NewLine}\t\t{MemberText.GetMethodSignatureText(declaringType: type, name: name, parameterTypes: parameterTypes)}"));
            }
예제 #6
0
        public override string Visit(MemberText memberText)
        {
            string typeName = StringExt.ToTitleCase(_member.Name);

            var template = $@"
[Serializable]
[JsonConverter(typeof(StringStrongTypeConverter<{typeName}>))]
public partial struct {typeName} : ITypedString,  IStrongTypeFactory<string, {typeName}>, IEquatable<{typeName}>
{{
    private readonly string _value;

    private {typeName}(string value)
    {{
        _value = value;
    }}

    public static explicit operator {typeName}(string value)
    {{
        return new {typeName}(value);
    }}

    public static implicit operator string({typeName} value)
    {{
        return value._value;
    }}

    public override string ToString()
    {{
        return _value;
    }}

    public string UnderlyingValue()
    {{
        return _value;
    }}

    public string Value {{ get {{ return _value; }} }}

    {typeName} IStrongTypeFactory<string, {typeName}>.NewWithValue(string value)
    {{
        return new {typeName}(value);
    }}

    public TResult Accept<TResult>(IStrongTypeVistor<TResult> visitor)
    {{
        return visitor.Visit(this);
    }}

    public override bool Equals(object other)
    {{
        if (other is {typeName})
        {{
            return Equals(({typeName})other);
        }}
        return false;
    }}

    public override int GetHashCode()
    {{
        return _value.GetHashCode();
    }}

    public bool Equals({typeName} other)
    {{
        if(_value == null)
        {{
            if(other._value == null)
            {{
                return true;
            }}

            return false;
        }}

        return _value.Equals(other._value);
    }}

    public static bool operator ==({typeName} left, {typeName} right)
    {{
        return left.Equals(right);
    }}

    public static bool operator !=({typeName} left, {typeName} right)
    {{
        return !left.Equals(right);
    }}
}}";

            return(template);
        }
예제 #7
0
 public override TResult Visit(MemberText memberText)
 {
     return(DefaultVisit(memberText));
 }
예제 #8
0
 public override string Visit(MemberText memberText)
 {
     return("string");
 }
예제 #9
0
 public override string Visit(MemberText memberText)
 {
     return(_typeNameVistor.Visit(memberText) + " COLLATE SQL_Latin1_General_CP1_CI_AS");
 }