Set the specified public field value of an object : Type « Reflection « C# / C Sharp






Set the specified public field value of an object

    

#region License and Copyright
/*
 * Dotnet Commons Reflection
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 
 * for more details. 
 *
 * You should have received a copy of the GNU Lesser General Public License 
 * along with this library; if not, write to the 
 * Free Software Foundation, Inc., 
 * 59 Temple Place, 
 * Suite 330, 
 * Boston, 
 * MA 02111-1307 
 * USA 
 * 
 */

#endregion

using System;
using System.Collections;
using System.IO;
using System.Reflection;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;

namespace Dotnet.Commons.Reflection
{
  /// -----------------------------------------------------------------------
  /// <summary>  
  /// This utility class contains a rich sets of utility methods that perform operations 
  /// on objects during runtime such as copying of property and field values
  /// between 2 objects, deep cloning of objects, etc.  
  /// </summary>
  /// -----------------------------------------------------------------------
  public abstract class ObjectUtils
  {


    /// ------------------------------------------------------------------------
    /// <summary>
    /// Set the specified <b>public</b> field value of an object
    /// </summary>
    /// <param name="vo">the Value Object on which setting is to be performed</param>
    /// <param name="fieldName">Field name</param>
    /// <param name="fieldValue">Value to be set</param>
    /// ------------------------------------------------------------------------
    public static object SetField(object vo, string fieldName, Object fieldValue)
    {
      if (vo == null)
        throw new System.ArgumentNullException("No object specified to set.");

      if (fieldName == null)
        throw new System.ArgumentNullException("No field name specified.");
      
      if ((fieldName == String.Empty) || (fieldName.Length < 1))
        throw new System.ArgumentException("Field name cannot be empty.");


      FieldInfo fieldInfo = vo.GetType().GetField(fieldName);

      if (fieldInfo == null)
        throw new System.ArgumentException("The class '" + vo.GetType().Name + "' does not have the field '"+ fieldName + "'");

      // Set the value 
      vo.GetType().InvokeMember(fieldInfo.Name,
                    BindingFlags.SetField,
                    null,
                    vo,
                    new object[]{fieldValue});
      return vo;
    }
   }
}

   
    
    
    
  








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 AssemblyDeeper 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 nameCreate 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.Returns all assemblies and their properties
35.Helper to display the "contents" of the Value Object
36.Get a public field value given its name
37.Deep Comparison two objects if they are alike.
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.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.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