using System;
using System.Diagnostics.CodeAnalysis;

namespace Sasa.QualityTools.DrFx.Tests.Violation.CSharp.Microsoft.Naming
{
    // この名前空間は CA1709:Namespace に違反しています。
    namespace name
    {
        public class Rule1709
        {
        }
    }

    // このクラスは CA1709:Type に違反しています。
    // このクラスは CA1709:TypeTypeParameter に違反しています。
    [SuppressMessage("Microsoft.Naming", "CA1715:IdentifiersShouldHaveCorrectPrefix")]
    public class rule1709A<ruleName>
    {
        public string Namespace { get; set; }

        // このメソッドは CA1709:Member に違反しています。
        // このメソッドは CA1709:MemberParameter に違反しています。
        // このメソッドは CA1709:MemberTypeParameter に違反しています。
        [SuppressMessage("Microsoft.Naming", "CA1715:IdentifiersShouldHaveCorrectPrefix")]
        public object createInstance<typeName>(typeName Name)
        {
            return Activator.CreateInstance(Type.GetType(Namespace + Name));
        }
    }

    // このデリゲートは CA1709:DelegateParameter に違反しています。
    public delegate void Rule1709B(string TypeName);

    // この名前空間は CA1709:NamespaceAbbreviation に違反しています。
    namespace NAME
    {
        public class Rule1709
        {
        }
    }

    // このクラスは CA1709:TypeAbbreviation に違反しています。
    // このクラスは CA1709:TypeTypeParameterAbbreviation に違反しています。
    [SuppressMessage("Microsoft.Naming", "CA1715:IdentifiersShouldHaveCorrectPrefix")]
    public class RULE1709C<RULE>
    {
        public string Namespace { get; set; }

        // このメソッドは CA1709:MemberAbbreviation に違反しています。
        // このメソッドは CA1709:MemberParameterAbbreviation に違反しています。
        // このメソッドは CA1709:MemberTypeParameterAbbreviation に違反しています。
        [SuppressMessage("Microsoft.Naming", "CA1715:IdentifiersShouldHaveCorrectPrefix")]
        public object CREATEInstance<TYPEName>(TYPEName typeNAME)
        {
            return Activator.CreateInstance(Type.GetType(Namespace + typeNAME));
        }
    }

    // このデリゲートは CA1709:DelegateParameterAbbreviation に違反しています。
    public delegate void Rule1709D(string typeNAME);
}
