using System;
using Microsoft.FxCop.Sdk;
namespace NameRuleCodeAnalysisRules

{
/// <summary>
/// 驗證方法類
/// </summary>
public
class ServiceSoftNameRuleMethod : BaseIntrospectionRule

{
public ServiceSoftNameRuleMethod()

:
base(
"ServiceSoftNameRuleMethod",
"NameRuleCodeAnalysisRules.Rules",
typeof(ServiceSoftNameRuleMethod).Assembly)

{ }
/// <summary>
/// 驗證方法首字母
/// </summary>
/// <param name="member">類型成員</param>
/// <returns></returns>
public
override ProblemCollection Check(Member member)

{

Method method = member
as Method;
if (method ==
null)

{
return
null;

}
else

{
if (!method.IsSpecialName && !Char.IsUpper(method.Name.Name, 0))

{

Problems.Add(
new Problem(GetResolution(member.Name.Name)));

}

}
return Problems;

}

}
/// <summary>
/// 驗證字段類
/// </summary>
public
class ServiceSoftNameRuleField : BaseIntrospectionRule

{
public ServiceSoftNameRuleField()

:
base(
"ServiceSoftNameRuleField",
"NameRuleCodeAnalysisRules.Rules",
typeof(ServiceSoftNameRuleField).Assembly)

{ }
/// <summary>
/// 驗證字段訪問修飾符
/// </summary>
/// <param name="member">類型成員</param>
/// <returns></returns>
public
override ProblemCollection Check(Member member)

{
if (member.DeclaringType
is EnumNode)

{
return
null;

}

Field field = member
as Field;
if (field ==
null)

{
return
null;

}
else

{
if (field.IsPublic)

{

Problems.Add(
new Problem(GetResolution(member.Name.Name)));

}
return Problems;

}

}

}

}