private string GetForwardedImplementation(ApiModel m, ApiMemberModel d) { switch (d.Kind) { case MemberKind.Method: return($"{d.ReturnType} {m.Interface}.{d.Identifier}{d.ArgsString}{Environment.NewLine}" + $"\t => {m.Namespace}.{m.Api}.{d.Identifier}({d.ArgsArgs});"); case MemberKind.Event: return($"event {d.ReturnType} {m.Interface}.{d.Identifier}{Environment.NewLine}{{{Environment.NewLine}" + $"\t add => {m.Namespace}.{m.Api}.{d.Identifier} += value; {Environment.NewLine}" + $"\t remove => {m.Namespace}.{m.Api}.{d.Identifier} -= value; {Environment.NewLine} }}"); case MemberKind.Property: return($"{d.ReturnType} {m.Interface}.{d.Identifier}{Environment.NewLine}{{{Environment.NewLine}" + $"\t get {{ return {m.Namespace}.{m.Api}.{d.Identifier}; }}{Environment.NewLine}" + $"\t set {{ {m.Namespace}.{m.Api}.{d.Identifier} = value; }}{Environment.NewLine}}}"); case MemberKind.PropertyGetOnly: return($"{d.ReturnType} {m.Interface}.{d.Identifier}{d.ArgsString}{Environment.NewLine}" + $"\t => {m.Namespace}.{m.Api}.{d.Identifier};"); default: throw new NotImplementedException($"Don't know how to generate forwarding implementation for {d.Kind}"); } }
public string GetInterfacePrototype(ApiMemberModel model) { switch (model.Kind) { case MemberKind.Method: return($"{model.ReturnType} {model.Identifier}{model.ArgsString};"); case MemberKind.Event: return($"event {model.ReturnType} {model.Identifier};"); case MemberKind.Property: return($"{model.ReturnType} {model.Identifier} {{ get; set; }}"); case MemberKind.PropertyGetOnly: return($"{model.ReturnType} {model.Identifier} {{ get; }}"); default: throw new NotImplementedException($"Don't know how to generate prototype for {model.Kind}"); } }
public static bool HasTypeConstraintClauses(this ApiMemberModel m) => !String.IsNullOrWhiteSpace(m.TypeConstraints);