📄 helper.cs
字号:
return value.Name + " : " + value.FieldType.ToString();
}
public static string GetNameWithDeclaringType(IFieldReference value)
{
return Helper.GetNameWithResolutionScope(value.DeclaringType as ITypeReference) + "." + GetName(value);
}
public static bool IsVisible(IFieldReference value, IVisibilityConfiguration visibility)
{
if (Helper.IsVisible(value.DeclaringType, visibility))
{
IFieldDeclaration fieldDeclaration = value.Resolve();
if (fieldDeclaration == null)
{
return true;
}
switch (fieldDeclaration.Visibility)
{
case FieldVisibility.Public:
return visibility.Public;
case FieldVisibility.Assembly:
return visibility.Assembly;
case FieldVisibility.FamilyOrAssembly:
return visibility.FamilyOrAssembly;
case FieldVisibility.Family:
return visibility.Family;
case FieldVisibility.Private:
return visibility.Private;
case FieldVisibility.FamilyAndAssembly:
return visibility.FamilyAndAssembly;
case FieldVisibility.PrivateScope:
return visibility.Private;
}
throw new NotSupportedException();
}
return false;
}
public static string GetName(IMethodReference value)
{
ITypeCollection genericArguments = value.GenericArguments;
if (genericArguments.Count > 0)
{
using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture))
{
for (int i = 0; i < genericArguments.Count; i++)
{
if (i != 0)
{
writer.Write(", ");
}
IType genericArgument = genericArguments[i];
if (genericArgument != null)
{
writer.Write(genericArgument.ToString());
}
else
{
writer.Write("???");
}
}
return value.Name + "<" + writer.ToString() + ">";
}
}
return value.Name;
}
public static string GetNameWithParameterList(IMethodReference value)
{
using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture))
{
writer.Write(Helper.GetName(value));
writer.Write("(");
IParameterDeclarationCollection parameters = value.Parameters;
for (int i = 0; i < parameters.Count; i++)
{
if (i != 0)
{
writer.Write(", ");
}
writer.Write(parameters[i].ParameterType.ToString());
}
if (value.CallingConvention == MethodCallingConvention.VariableArguments)
{
if (value.Parameters.Count > 0)
{
writer.Write(", ");
}
writer.Write("...");
}
writer.Write(")");
if ((value.Name != ".ctor") && (value.Name != ".cctor"))
{
writer.Write(" : ");
writer.Write(value.ReturnType.Type.ToString());
}
return writer.ToString();
}
}
public static string GetNameWithDeclaringType(IMethodReference value)
{
ITypeReference typeReference = value.DeclaringType as ITypeReference;
if (typeReference != null)
{
return Helper.GetNameWithResolutionScope(typeReference) + "." + Helper.GetNameWithParameterList(value);
}
IArrayType arrayType = value.DeclaringType as IArrayType;
if (arrayType != null)
{
return arrayType.ToString() + "." + Helper.GetNameWithParameterList(value);
}
throw new NotSupportedException();
}
public static bool IsVisible(IMethodReference value, IVisibilityConfiguration visibility)
{
if (Helper.IsVisible(value.DeclaringType, visibility))
{
IMethodDeclaration methodDeclaration = value.Resolve();
switch (methodDeclaration.Visibility)
{
case MethodVisibility.Public:
return visibility.Public;
case MethodVisibility.Assembly:
return visibility.Assembly;
case MethodVisibility.FamilyOrAssembly:
return visibility.FamilyOrAssembly;
case MethodVisibility.Family:
return visibility.Family;
case MethodVisibility.Private:
case MethodVisibility.PrivateScope:
return visibility.Private;
case MethodVisibility.FamilyAndAssembly:
return visibility.FamilyAndAssembly;
}
throw new NotSupportedException();
}
return false;
}
public static string GetName(IPropertyReference value)
{
IParameterDeclarationCollection parameters = value.Parameters;
if (parameters.Count > 0)
{
using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture))
{
for (int i = 0; i < parameters.Count; i++)
{
if (i != 0)
{
writer.Write(", ");
}
writer.Write(parameters[i].ParameterType.ToString());
}
return value.Name + "[" + writer.ToString() + "] : " + value.PropertyType.ToString();
}
}
return value.Name + " : " + value.PropertyType.ToString();
}
public static string GetNameWithDeclaringType(IPropertyReference value)
{
return Helper.GetNameWithResolutionScope(value.DeclaringType as ITypeReference) + "." + Helper.GetName(value);
}
public static IMethodDeclaration GetSetMethod(IPropertyReference value)
{
IPropertyDeclaration propertyDeclaration = value.Resolve();
if (propertyDeclaration.SetMethod != null)
{
return propertyDeclaration.SetMethod.Resolve();
}
return null;
}
public static IMethodDeclaration GetGetMethod(IPropertyReference value)
{
IPropertyDeclaration propertyDeclaration = value.Resolve();
if (propertyDeclaration.GetMethod != null)
{
return propertyDeclaration.GetMethod.Resolve();
}
return null;
}
public static bool IsStatic(IPropertyReference value)
{
IMethodDeclaration setMethod = Helper.GetSetMethod(value);
IMethodDeclaration getMethod = Helper.GetGetMethod(value);
bool isStatic = false;
isStatic |= ((setMethod != null) && (setMethod.Static));
isStatic |= ((getMethod != null) && (getMethod.Static));
return isStatic;
}
public static MethodVisibility GetVisibility(IPropertyReference value)
{
IMethodDeclaration getMethod = Helper.GetGetMethod(value);
IMethodDeclaration setMethod = Helper.GetSetMethod(value);
MethodVisibility visibility = MethodVisibility.Public;
if ((setMethod != null) && (getMethod != null))
{
if (getMethod.Visibility == setMethod.Visibility)
{
visibility = getMethod.Visibility;
}
}
else if (setMethod != null)
{
visibility = setMethod.Visibility;
}
else if (getMethod != null)
{
visibility = getMethod.Visibility;
}
return visibility;
}
public static bool IsVisible(IPropertyReference value, IVisibilityConfiguration visibility)
{
if (Helper.IsVisible(value.DeclaringType, visibility))
{
switch (Helper.GetVisibility(value))
{
case MethodVisibility.Public:
return visibility.Public;
case MethodVisibility.Assembly:
return visibility.Assembly;
case MethodVisibility.FamilyOrAssembly:
return visibility.FamilyOrAssembly;
case MethodVisibility.Family:
return visibility.Family;
case MethodVisibility.Private:
case MethodVisibility.PrivateScope:
return visibility.Private;
case MethodVisibility.FamilyAndAssembly:
return visibility.FamilyAndAssembly;
}
throw new NotSupportedException();
}
return false;
}
public static string GetName(IEventReference value)
{
return value.Name;
}
public static string GetNameWithDeclaringType(IEventReference value)
{
return Helper.GetNameWithResolutionScope(value.DeclaringType as ITypeReference) + "." + Helper.GetName(value);
}
public static IMethodDeclaration GetAddMethod(IEventReference value)
{
IEventDeclaration eventDeclaration = value.Resolve();
if (eventDeclaration.AddMethod != null)
{
return eventDeclaration.AddMethod.Resolve ();
}
return null;
}
public static IMethodDeclaration GetRemoveMethod(IEventReference value)
{
IEventDeclaration eventDeclaration = value.Resolve();
if (eventDeclaration.RemoveMethod != null)
{
return eventDeclaration.RemoveMethod.Resolve();
}
return null;
}
public static IMethodDeclaration GetInvokeMethod(IEventReference value)
{
IEventDeclaration eventDeclaration = value.Resolve();
if (eventDeclaration.InvokeMethod != null)
{
return eventDeclaration.InvokeMethod.Resolve ();
}
return null;
}
public static MethodVisibility GetVisibility(IEventReference value)
{
IMethodDeclaration addMethod = Helper.GetAddMethod(value);
IMethodDeclaration removeMethod = Helper.GetRemoveMethod(value);
IMethodDeclaration invokeMethod = Helper.GetInvokeMethod(value);
if ((addMethod != null) && (removeMethod != null) && (invokeMethod != null))
{
if ((addMethod.Visibility == removeMethod.Visibility) && (addMethod.Visibility == invokeMethod.Visibility))
{
return addMethod.Visibility;
}
}
else if ((addMethod != null) && (removeMethod != null))
{
if (addMethod.Visibility == removeMethod.Visibility)
{
return addMethod.Visibility;
}
}
else if ((addMethod != null) && (invokeMethod != null))
{
if (addMethod.Visibility == invokeMethod.Visibility)
{
return addMethod.Visibility;
}
}
else if ((removeMethod != null) && (invokeMethod != null))
{
if (removeMethod.Visibility == invokeMethod.Visibility)
{
return removeMethod.Visibility;
}
}
else if (addMethod != null)
{
return addMethod.Visibility;
}
else if (removeMethod != null)
{
return removeMethod.Visibility;
}
else if (invokeMethod != null)
{
return invokeMethod.Visibility;
}
return MethodVisibility.Public;
}
public static bool IsVisible(IEventReference value, IVisibilityConfiguration visibility)
{
if (Helper.IsVisible(value.DeclaringType, visibility))
{
switch (Helper.GetVisibility(value))
{
case MethodVisibility.Public :
return visibility.Public;
case MethodVisibility.Assembly :
return visibility.Assembly;
case MethodVisibility.FamilyOrAssembly :
return visibility.FamilyOrAssembly;
case MethodVisibility.Family :
return visibility.Family;
case MethodVisibility.Private:
case MethodVisibility.PrivateScope:
return visibility.Private;
case MethodVisibility.FamilyAndAssembly :
return visibility.FamilyAndAssembly;
}
throw new NotSupportedException();
}
return false;
}
public static bool IsStatic(IEventReference value)
{
bool isStatic = false;
if (Helper.GetAddMethod(value) != null)
{
isStatic |= Helper.GetAddMethod(value).Static;
}
if (Helper.GetRemoveMethod(value) != null)
{
isStatic |= Helper.GetRemoveMethod(value).Static;
}
if (Helper.GetInvokeMethod(value) != null)
{
isStatic |= Helper.GetInvokeMethod(value).Static;
}
return isStatic;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -