Click here to Skip to main content
12,700,558 members (32,963 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as

Stats

29.7K views
9 bookmarked
Posted

Useful wrapper class to override the Object.ToString method

, 3 Oct 2011 CPOL
Rate this:
Please Sign up or sign in to vote.
A useful wrapper class to override the Object.ToString method.

This class can be useful for when you want to override the Object.ToString method on a type you don't have access to edit.


public class ToStringWrapper<T>
{
    private readonly T _wrappedObject;
    private readonly Func<T, string> _toStringFunction;

    public T WrappedObject
    {
        get { return _wrappedObject; }
    }

    public ToStringWrapper(T wrappedObject, Func<T, string> toStringFunction)
    {
        this._wrappedObject = wrappedObject;
        this._toStringFunction = toStringFunction;
    }

    public override string ToString()
    {
        return _toStringFunction(_wrappedObject);
    }
}


Sample usage: Don't have access to edit the Person type and you want the Name property's value to be returned in the ToString method.



public sealed class Person
{
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // Person type not wrapped.  Type will be returned in ToString method
        var person = new Person { Name = "TestName" };
        Console.WriteLine(person);

        // Person type wrapped with ToStringWrapper<T> class and supplying
        // a function that will return the Person class's Name property value.
        var personWrapper = new ToStringWrapper<Person>(person, i => i.Name);
        Console.WriteLine(personWrapper);

        Console.ReadKey();
    }
}


Output:
ConsoleApplication1.Person
TestName

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Jay_Cee
South Africa South Africa
No Biography provided

You may also be interested in...

Comments and Discussions

 
GeneralReason for my vote of 5 Nice Pin
Shahare12-Sep-11 20:32
memberShahare12-Sep-11 20:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170118.1 | Last Updated 3 Oct 2011
Article Copyright 2011 by Jay_Cee
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid