public void Can_write_ValidateRequestAttribute()
        {
            var nativeTypes = appHost.AssertPlugin <NativeTypesFeature>();
            var gen         = nativeTypes.DefaultGenerator;
            var attr        = new ValidateRequestAttribute("HasRole('Accounts')")
            {
                ErrorCode = "ExCode",
                Message   = "'Id' Is Required",
            };
            var metaAttr = gen.ToAttribute(attr);

            string argValue(string name) => metaAttr.Args.First(x => x.Name == name).Value;

            Assert.That(metaAttr.Name, Is.EqualTo("ValidateRequest"));
            Assert.That(metaAttr.Args.Count, Is.EqualTo(3));
            Assert.That(argValue(nameof(ValidateRequestAttribute.Validator)), Is.EqualTo("HasRole('Accounts')"));
            Assert.That(argValue(nameof(ValidateRequestAttribute.ErrorCode)), Is.EqualTo("ExCode"));
            Assert.That(argValue(nameof(ValidateRequestAttribute.Message)), Is.EqualTo("'Id' Is Required"));

            var csharp = new CSharpGenerator(new MetadataTypesConfig {
                DefaultNamespaces = new List <string> {
                    "ServiceStack"
                }
            });
            var src = csharp.GetCode(new MetadataTypes {
                Types = new List <MetadataType> {
                    new MetadataType {
                        Name       = "TheType",
                        Attributes = new List <MetadataAttribute> {
                            metaAttr,
                        }
                    }
                }
            }, new BasicRequest(), appHost.TryResolve <INativeTypesMetadata>());

            src.Print();

            Assert.That(src, Does.Contain(
                            "[ValidateRequest(\"HasRole('Accounts')\", ErrorCode=\"ExCode\", Message=\"'Id' Is Required\")]"));
        }