private string GetInterfaceMember(Declaration member, string interfaceName, string memberBody) { var implementingMemberName = $"{interfaceName}_{member.IdentifierName}"; if (member is ModuleBodyElementDeclaration mbed) { return(_codeBuilder.BuildMemberBlockFromPrototype(mbed, accessibility: Accessibility.Private, newIdentifier: $"{interfaceName}_{member.IdentifierName}", content: memberBody)); } if (member is VariableDeclaration variable) { if (!_codeBuilder.TryBuildPropertyGetCodeBlock(variable, $"{interfaceName}_{variable.IdentifierName}", out var propertyGet, Accessibility.Private, memberBody)) { throw new InvalidOperationException(); } var members = new List <string> { propertyGet }; if (variable.AsTypeName.Equals(Tokens.Variant) || !variable.IsObject) { if (!_codeBuilder.TryBuildPropertyLetCodeBlock(variable, $"{interfaceName}_{variable.IdentifierName}", out var propertyLet, Accessibility.Private, memberBody)) { throw new InvalidOperationException(); } members.Add(propertyLet); } if (variable.AsTypeName.Equals(Tokens.Variant) || variable.IsObject) { if (!_codeBuilder.TryBuildPropertySetCodeBlock(variable, $"{interfaceName}_{variable.IdentifierName}", out var propertySet, Accessibility.Private, memberBody)) { throw new InvalidOperationException(); } members.Add(propertySet); } return(string.Join($"{NewLines.DOUBLE_SPACE}", members)); } return(string.Empty); }