本文整理汇总了C#中MethodDeclaration.ToString方法的典型用法代码示例。如果您正苦于以下问题:C# MethodDeclaration.ToString方法的具体用法?C# MethodDeclaration.ToString怎么用?C# MethodDeclaration.ToString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MethodDeclaration
的用法示例。
在下文中一共展示了MethodDeclaration.ToString方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateCode
protected override IEnumerable<string> GenerateCode (List<object> includedMembers)
{
// Genereate Equals
var methodDeclaration = new MethodDeclaration ();
methodDeclaration.Name = "Equals";
methodDeclaration.ReturnType = new PrimitiveType ("bool");
methodDeclaration.Modifiers = ICSharpCode.NRefactory.CSharp.Modifiers.Public | ICSharpCode.NRefactory.CSharp.Modifiers.Override;
methodDeclaration.Body = new BlockStatement ();
methodDeclaration.Parameters.Add (new ParameterDeclaration (new PrimitiveType ("object"), "obj"));
var paramId = new IdentifierExpression ("obj");
IfElseStatement ifStatement = new IfElseStatement ();
ifStatement.Condition = new BinaryOperatorExpression (paramId, BinaryOperatorType.Equality, new PrimitiveExpression (null));
ifStatement.TrueStatement = new ReturnStatement (new PrimitiveExpression (false));
methodDeclaration.Body.Statements.Add (ifStatement);
ifStatement = new IfElseStatement ();
var arguments = new List<Expression> ();
arguments.Add (new ThisReferenceExpression ());
arguments.Add (paramId.Clone ());
ifStatement.Condition = new InvocationExpression (new IdentifierExpression ("ReferenceEquals"), arguments);
ifStatement.TrueStatement = new ReturnStatement (new PrimitiveExpression (true));
methodDeclaration.Body.Statements.Add (ifStatement);
ifStatement = new IfElseStatement ();
ifStatement.Condition = new BinaryOperatorExpression (new InvocationExpression (new MemberReferenceExpression (paramId.Clone (), "GetType")), BinaryOperatorType.InEquality, new TypeOfExpression (new SimpleType (Options.EnclosingType.Name)));
ifStatement.TrueStatement = new ReturnStatement (new PrimitiveExpression (false));
methodDeclaration.Body.Statements.Add (ifStatement);
var varType = new SimpleType (Options.EnclosingType.Name);
var varDecl = new VariableDeclarationStatement (varType, "other", new CastExpression (varType.Clone (), paramId.Clone ()));
methodDeclaration.Body.Statements.Add (varDecl);
var otherId = new IdentifierExpression ("other");
Expression binOp = null;
foreach (IMember member in includedMembers) {
Expression right = new BinaryOperatorExpression (new IdentifierExpression (member.Name), BinaryOperatorType.Equality, new MemberReferenceExpression (otherId.Clone (), member.Name));
if (binOp == null) {
binOp = right;
} else {
binOp = new BinaryOperatorExpression (binOp, BinaryOperatorType.ConditionalAnd, right);
}
}
methodDeclaration.Body.Statements.Add (new ReturnStatement (binOp));
yield return methodDeclaration.ToString (Options.FormattingOptions);
methodDeclaration = new MethodDeclaration ();
methodDeclaration.Name = "GetHashCode";
methodDeclaration.ReturnType = new PrimitiveType ("int");
methodDeclaration.Modifiers = ICSharpCode.NRefactory.CSharp.Modifiers.Public | ICSharpCode.NRefactory.CSharp.Modifiers.Override;
methodDeclaration.Body = new BlockStatement ();
binOp = null;
foreach (IMember member in includedMembers) {
Expression right;
right = new InvocationExpression (new MemberReferenceExpression (new IdentifierExpression (member.Name), "GetHashCode"));
IType type = member.ReturnType;
if (type != null && type.Kind != TypeKind.Struct && type.Kind != TypeKind.Enum)
right = new ParenthesizedExpression (new ConditionalExpression (new BinaryOperatorExpression (new IdentifierExpression (member.Name), BinaryOperatorType.InEquality, new PrimitiveExpression (null)), right, new PrimitiveExpression (0)));
if (binOp == null) {
binOp = right;
} else {
binOp = new BinaryOperatorExpression (binOp, BinaryOperatorType.ExclusiveOr, right);
}
}
var uncheckedBlock = new BlockStatement ();
uncheckedBlock.Statements.Add (new ReturnStatement (binOp));
methodDeclaration.Body.Statements.Add (new UncheckedStatement (uncheckedBlock));
yield return methodDeclaration.ToString (Options.FormattingOptions);
}
示例2: GenerateCode
protected override IEnumerable<string> GenerateCode (List<object> includedMembers)
{
foreach (IMember member in includedMembers) {
var invokeMethod = member.ReturnType.GetDelegateInvokeMethod ();
if (invokeMethod == null)
continue;
var methodDeclaration = new MethodDeclaration () {
Name = GetEventMethodName (member),
ReturnType = new PrimitiveType ("void"),
Modifiers = Modifiers.Protected | Modifiers.Virtual,
Parameters = {
new ParameterDeclaration (Options.CreateShortType (invokeMethod.Parameters [1].Type), invokeMethod.Parameters [1].Name)
},
Body = new BlockStatement () {
new VariableDeclarationStatement (
new SimpleType ("var"),//Options.CreateShortType (member.ReturnType),
handlerName,
new MemberReferenceExpression (new ThisReferenceExpression (), member.Name)
),
new IfElseStatement () {
Condition = new BinaryOperatorExpression (new IdentifierExpression (handlerName), BinaryOperatorType.InEquality, new PrimitiveExpression (null)),
TrueStatement = new ExpressionStatement (new InvocationExpression (new IdentifierExpression (handlerName)) {
Arguments = {
new ThisReferenceExpression (),
new IdentifierExpression (invokeMethod.Parameters [1].Name)
}
})
}
}
};
yield return methodDeclaration.ToString (Options.FormattingOptions);
}
}