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