Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Pouliot <sebastien@ximian.com>2005-10-18 19:19:43 +0400
committerSebastien Pouliot <sebastien@ximian.com>2005-10-18 19:19:43 +0400
commitf1b7217ebee703fe3e97e406ffa89e1cd2abd322 (patch)
tree0a675cb0789b579c592317234ffd5b61eb880549 /mcs/class/System/System.ComponentModel.Design.Serialization
parent2c650d62454edfb686e3ad85631c9908613cb109 (diff)
2005-10-18 Sebastien Pouliot <sebastien@ximian.com>
* InstanceDescriptor.cs: Fix Invoke method as there's no 'this' for ctors. svn path=/trunk/mcs/; revision=51867
Diffstat (limited to 'mcs/class/System/System.ComponentModel.Design.Serialization')
-rw-r--r--mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog6
-rw-r--r--mcs/class/System/System.ComponentModel.Design.Serialization/InstanceDescriptor.cs31
2 files changed, 30 insertions, 7 deletions
diff --git a/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog b/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog
index 0b30e46b38a..838d333e826 100644
--- a/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog
+++ b/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog
@@ -1,3 +1,7 @@
+2005-10-18 Sebastien Pouliot <sebastien@ximian.com>
+
+ * InstanceDescriptor.cs: Fix Invoke method as there's no 'this' for ctors.
+
2005-01-27 LLuis Sanchez Gual <lluis@novell.com>
* InstanceDescriptor.cs: Constructors don't need to be static.
@@ -9,4 +13,4 @@
* DesignerSerializerAttribute.cs: Implemented, fixed AttributeUsage
* ResolveNameEventArgs.cs: Visibility bug fixed
* RootDesignerSerializerAttribute.cs: Fixed and implemented, fixed AttributeUsage
- * InstanceDescriptor.cs: Completely Implemented \ No newline at end of file
+ * InstanceDescriptor.cs: Completely Implemented
diff --git a/mcs/class/System/System.ComponentModel.Design.Serialization/InstanceDescriptor.cs b/mcs/class/System/System.ComponentModel.Design.Serialization/InstanceDescriptor.cs
index fa9eac239e9..6e75bd45ff5 100644
--- a/mcs/class/System/System.ComponentModel.Design.Serialization/InstanceDescriptor.cs
+++ b/mcs/class/System/System.ComponentModel.Design.Serialization/InstanceDescriptor.cs
@@ -7,8 +7,7 @@
//
// (C) 2003 Martin Willemoes Hansen
// (C) 2003 Andreas Nahr
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
@@ -50,9 +49,7 @@ namespace System.ComponentModel.Design.Serialization
public InstanceDescriptor(MemberInfo member, ICollection arguments, bool isComplete)
{
this.isComplete = isComplete;
- if (member == null)
- throw new ArgumentNullException ("member", "MemberInfo must be valid");
- if (!IsMemberValid (member, arguments))
+ if ((member != null) && !IsMemberValid (member, arguments))
throw new ArgumentException ("Only Constructor, Method, Field or Property members allowed", "member");
this.member = member;
this.arguments = arguments;
@@ -123,14 +120,36 @@ namespace System.ComponentModel.Design.Serialization
get { return member; }
}
+ private bool HasThis ()
+ {
+ if (member is ConstructorInfo)
+ return false;
+ MethodInfo mi = (member as MethodInfo);
+ if (mi != null)
+ return !mi.IsStatic;
+ FieldInfo fi = (member as FieldInfo);
+ if (fi != null)
+ return !fi.IsStatic;
+ PropertyInfo pi = (member as PropertyInfo);
+ if (pi != null)
+ return !pi.GetGetMethod ().IsStatic;
+ return true;
+ }
+
public object Invoke()
{
object[] parsearguments;
if (arguments == null)
parsearguments = new object[0];
- else {
+ else if (HasThis ()) {
parsearguments = new object[arguments.Count - 1];
arguments.CopyTo (parsearguments, 0);
+ } else {
+ parsearguments = (arguments as object[]);
+ if (parsearguments == null) {
+ parsearguments = new object[arguments.Count];
+ arguments.CopyTo (parsearguments, 0);
+ }
}
//MemberInfo member;