Returns all assemblies and their properties
/*
Copyright (c) 2010 <a href="http://www.gutgames.com">James Craig</a>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.*/
#region Usings
using System;
using System.IO;
using System.Reflection;
using System.Text;
using System.Linq.Expressions;
using System.Collections;
#endregion
namespace Utilities
{
/// <summary>
/// Utility class that handles various
/// functions dealing with reflection.
/// </summary>
public static class Reflection
{
/// <summary>
/// Dumps the properties names and current values
/// from an object
/// </summary>
/// <param name="Object">Object to dunp</param>
/// <returns>An HTML formatted table containing the information about the object</returns>
public static string DumpProperties(object Object)
{
try
{
StringBuilder TempValue = new StringBuilder();
TempValue.Append("<table><thead><tr><th>Property Name</th><th>Property Value</th></tr></thead><tbody>");
Type ObjectType = Object.GetType();
PropertyInfo[] Properties = ObjectType.GetProperties();
foreach (PropertyInfo Property in Properties)
{
TempValue.Append("<tr><td>" + Property.Name + "</td><td>");
ParameterInfo[] Parameters = Property.GetIndexParameters();
if (Property.CanRead && Parameters.Length == 0)
{
try
{
object Value = Property.GetValue(Object, null);
TempValue.Append(Value == null ? "null" : Value.ToString());
}
catch { }
}
TempValue.Append("</td></tr>");
}
TempValue.Append("</tbody></table>");
return TempValue.ToString();
}
catch (Exception e)
{
return e.ToString();
}
}
/// <summary>
/// Dumps the properties names and current values
/// from an object type (used for static classes)
/// </summary>
/// <param name="ObjectType">Object type to dunp</param>
/// <returns>An HTML formatted table containing the information about the object type</returns>
public static string DumpProperties(Type ObjectType)
{
try
{
StringBuilder TempValue = new StringBuilder();
TempValue.Append("<table><thead><tr><th>Property Name</th><th>Property Value</th></tr></thead><tbody>");
PropertyInfo[] Properties = ObjectType.GetProperties();
foreach (PropertyInfo Property in Properties)
{
TempValue.Append("<tr><td>" + Property.Name + "</td><td>");
if (Property.GetIndexParameters().Length == 0)
{
try
{
TempValue.Append(Property.GetValue(null, null) == null ? "null" : Property.GetValue(null, null).ToString());
}
catch { }
}
TempValue.Append("</td></tr>");
}
TempValue.Append("</tbody></table>");
return TempValue.ToString();
}
catch (Exception e)
{
return e.ToString();
}
}
/// <summary>
/// Returns all assemblies and their properties
/// </summary>
/// <returns>An HTML formatted string that contains the assemblies and their information</returns>
public static string DumpAllAssembliesAndProperties()
{
try
{
StringBuilder Builder = new StringBuilder();
Assembly[] Assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly Assembly in Assemblies)
{
Builder.Append("<strong>" + Assembly.GetName().Name + "</strong><br />");
Builder.Append(DumpProperties(Assembly) + "<br /><br />");
}
return Builder.ToString();
}
catch { throw; }
}
}
}
Related examples in the same category
1. | Call GetType() from StringBuilder | | |
2. | Call GetType for int data type | | |
3. | IsGeneric and IsGenericTypeDefinition | | |
4. | demonstrates both the instance and static GetType methods | | |
5. | Generic methods, like nongeneric methods, can be invoked dynamically at run time. | | |
6. | Type.GetGenericArguments and MethodInfo.GetGenericArguments: | | |
7. | Get Generic Type Definition | | |
8. | Query properties of a Type | | |
9. | Deeper Reflection:Listing All the Types in an Assembly | | |
10. | Illustrates runtime type creation | | |
11. | The typeName parameter is a combination of the Assembly and Type names | | |
12. | Call static method GetType from Type to get the Type instance | | |
13. | Use GetCustomAttributes from Type to get custom attributes | | |
14. | Use Type.GetType to check the type of an object | | |
15. | Get object Type Name, UnderlyingSystemType, IsClass | | |
16. | Type.GetConstructors | | |
17. | Use Type.IsClass to check if a type is a class | | |
18. | Print Types | | |
19. | Determining the base classes and interfaces for a class. | | |
20. | Create Object from assembly name and class name | | |
21. | Makes a shallow copy of the object to a different class type (inherits from the original) | | |
22. | Makes a shallow copy of the object | | |
23. | Get all methods from an object | | |
24. | Get Derivation from an object | | |
25. | The full name of the Array type | | |
26. | Change type | | |
27. | Does a given Type have a Default Constructor | | |
28. | Is it a Nullable Type | | |
29. | Is Value Type Unitialized Value | | |
30. | Get Type Unitialized Value | | |
31. | Is Object Unitialized Value | | |
32. | Is it a SubClass for another class | | |
33. | Convert type from initial Value | | |
34. | Helper to display the "contents" of the Value Object | | |
35. | Get a public field value given its name | | |
36. | Deep Comparison two objects if they are alike. | | |
37. | Set the specified public field value of an object | | |
38. | Determine if a type is cloneable: either a value type or implementing ICloneable. | | |
39. | Provides a simple reflection based mapper to perform a Data Mapping between two types of objects | | |
40. | Represents type declarations: class types, interface types, array types, value types, enumeration types, type parameters, generic type definitions, and open or closed constructed generic types. | | |
41. | Gets the attributes associated with the Type. | | |
42. | Gets the type from which the current Type directly inherits. | | |
43. | Gets a value indicating whether the current Type object has type parameters that have not been replaced by specific types. | | |
44. | Gets the type that declares the current nested type or generic type parameter. | | |
45. | Gets a reference to the default binder. | | |
46. | Represents the member filter used on attributes. | | |
47. | Returns an array of Type objects representing a filtered list of interfaces implemented or inherited by the current Type. | | |
48. | Returns a filtered array of MemberInfo objects of the specified member type. | | |
49. | Gets the number of dimensions in an Array. | | |
50. | Searches for the members defined for the current Type whose DefaultMemberAttribute is set. | | |
51. | Type.GetElementType | | |
52. | Returns a Type object that represents a generic type definition from which the current generic type can be constructed. | | |
53. | Searches for the interface with the specified name. | | |
54. | Get types implementing Dictionary | | |
55. | Returns all the public properties of the current Type. | | |
56. | Type to string | | |
57. | Get Full Type String | | |
58. | Get class members | | |
59. | Reflector | | |
60. | Is Type a primitive type | | |
61. | Find Method With One Parameter Of Type | | |
62. | Determines whether the current type is an implementation of the specified interface. | | |
63. | Returns equality with type conversion | | |
64. | Groups the utility methods that extracts the meta data of a type. | | |
65. | Type loader | | |
66. | Get Friendly Type Name | | |
67. | Recursively gets all generic type params in any given type definition. | | |
68. | Type Manager | | |
69. | Given an anonymous type | | |
70. | Type Normalizer | | |
71. | Run static/Instance method | | |
72. | Get Subclass | | |