本文整理汇总了C#中Compilation.EditorBrowsableAttributeType方法的典型用法代码示例。如果您正苦于以下问题:C# Compilation.EditorBrowsableAttributeType方法的具体用法?C# Compilation.EditorBrowsableAttributeType怎么用?C# Compilation.EditorBrowsableAttributeType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Compilation
的用法示例。
在下文中一共展示了Compilation.EditorBrowsableAttributeType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetSpecialEditorBrowsableAttributeConstructor
/// <summary>
/// Finds the constructor which takes exactly one argument, which must be of type EditorBrowsableState.
/// It does not require that the EditorBrowsableAttribute and EditorBrowsableState types be those
/// shipped by Microsoft, but it does demand the types found follow the expected pattern. If at any
/// point that pattern appears to be violated, return null to indicate that an appropriate constructor
/// could not be found.
/// </summary>
public static IMethodSymbol GetSpecialEditorBrowsableAttributeConstructor(Compilation compilation)
{
var editorBrowsableAttributeType = compilation.EditorBrowsableAttributeType();
var editorBrowsableStateType = compilation.EditorBrowsableStateType();
if (editorBrowsableAttributeType == null || editorBrowsableStateType == null)
{
return null;
}
var candidateConstructors = editorBrowsableAttributeType.Constructors
.Where(c => c.Parameters.Length == 1 && c.Parameters[0].Type == editorBrowsableStateType);
// Ensure the constructor adheres to the expected EditorBrowsable pattern
candidateConstructors = candidateConstructors.Where(c => (!c.IsVararg &&
!c.Parameters[0].IsRefOrOut() &&
!c.Parameters[0].CustomModifiers.Any()));
// If there are multiple constructors that look correct then the discovered types do not match the
// expected pattern, so return null.
if (candidateConstructors.Count() <= 1)
{
return candidateConstructors.FirstOrDefault();
}
else
{
return null;
}
}