From f95b6081cba084d1b067acea99c0effa2b3bf42c Mon Sep 17 00:00:00 2001
From: MW
Date: Thu, 24 May 2007 12:35:32 +0000
Subject: Renamed the new Directories. (removed the "-Source" from the end of
them)
---
Common/XmlRpcCS/XmlRpcExposedAttribute.cs | 60 +++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 Common/XmlRpcCS/XmlRpcExposedAttribute.cs
(limited to 'Common/XmlRpcCS/XmlRpcExposedAttribute.cs')
diff --git a/Common/XmlRpcCS/XmlRpcExposedAttribute.cs b/Common/XmlRpcCS/XmlRpcExposedAttribute.cs
new file mode 100644
index 0000000..67b27ae
--- /dev/null
+++ b/Common/XmlRpcCS/XmlRpcExposedAttribute.cs
@@ -0,0 +1,60 @@
+namespace Nwc.XmlRpc
+{
+ using System;
+ using System.Reflection;
+
+ ///
+ /// Simple tagging attribute to indicate participation is XML-RPC exposure.
+ ///
+ ///
+ /// If present at the class level it indicates that this class does explicitly
+ /// expose methods. If present at the method level it denotes that the method
+ /// is exposed.
+ ///
+ [AttributeUsage(
+ AttributeTargets.Class | AttributeTargets.Method,
+ AllowMultiple = false,
+ Inherited = true
+ )]
+ public class XmlRpcExposedAttribute : Attribute
+ {
+ /// Check if obj is an object utilizing the XML-RPC exposed Attribute.
+ /// Object of a class or method to check for attribute.
+ /// Boolean true if attribute present.
+ public static Boolean ExposedObject(Object obj)
+ {
+ return IsExposed(obj.GetType());
+ }
+
+ /// Check if obj.methodName is an XML-RPC exposed method.
+ /// A method is considered to be exposed if it exists and, either, the object does not use the XmlRpcExposed attribute,
+ /// or the object does use the XmlRpcExposed attribute and the method has the XmlRpcExposed attribute as well.
+ /// Boolean true if the method is exposed.
+ public static Boolean ExposedMethod(Object obj, String methodName)
+ {
+ Type type = obj.GetType();
+ MethodInfo method = type.GetMethod(methodName);
+
+ if (method == null)
+ throw new MissingMethodException("Method " + methodName + " not found.");
+
+ if (!IsExposed(type))
+ return true;
+
+ return IsExposed(method);
+ }
+
+ /// Check if mi is XML-RPC exposed.
+ /// MemberInfo of a class or method to check for attribute.
+ /// Boolean true if attribute present.
+ public static Boolean IsExposed(MemberInfo mi)
+ {
+ foreach (Attribute attr in mi.GetCustomAttributes(true))
+ {
+ if (attr is XmlRpcExposedAttribute)
+ return true;
+ }
+ return false;
+ }
+ }
+}
--
cgit v1.1