Monday, June 22, 2026

C# Example of Generic class using Func delegate as constructor parameter and Role of Tuple

Example of Generic class using Func delegate as constructor parameter and Func<T,(string, int)> delegate using Tuple to return multiple properties of object of type T:

Suppose that there is Engineer class:
class Engineer
{
    public Engineer(string name, int age)
    {
        Name = name;
        Age = age;
    }
    public string Name { get; }
    public int Age { get; }
}
Create NageAge generic class which will initialize Func delegate through its constructor. This delegate object will be invoked inside GetNameAge method by passing an object as argument.
class NameAgeClass<T>
{
    private readonly Func<T, (string, int)> _nameAge;

    public NameAgeClass(Func<T, (string, int)> nameAge)
    {
        _nameAge = nameAge;
    }
    public void GetNameAge(T obj)
    {
        var (name, age) = _nameAge(obj);
        Console.WriteLine($"Name: {name}, Age: {age}");
    }
}
This is the consumer class where instance of NameAgeClass is created. Note that lambda expression is used to pass delegate object to the constructor.
class Program
{
    static void Main()
    {
        NameAgeClass<Engineer> nameAgeClass = new NameAgeClass<Engineer>(e => (e.Name, e.Age));
        nameAgeClass.GetNameAge(new Engineer("Anil", 20));
        nameAgeClass.GetNameAge(new Engineer("Vikas", 30));
    }
}

No comments:

Post a Comment

Hot Topics