Можно ли добиться, набрав func
в диктовке, с разными типами в качестве ключей и без произнесения в func
.
Примерно так:
class Program
{
class Person
{
public int Id { get; set; }
}
class Dog
{
public string Name { get; set; }
}
static void Main(string[] args)
{
var funcDict = new Dictionary<Type, Func<object, object, bool>>()
{
{typeof(Person), (Person p1, Person p2) => p1.Id == p2.Id},
{typeof(Dog), (Dog d1, Dog d2) => d1.Name == d2.Name},
};
var p1 = new Person()
{
Id = 4
};
var p2 = new Person();
Console.WriteLine(funcDict[p1.GetType()].Invoke(p1, p2));
}
}
Лучшее, что я могу придумать, - это создание функций с object
типами, а затем приведение в тело func
, но, если возможно, хотелось бы избежать этого, потому что это привело бы к гораздо более чистому API.
var funcDict = new Dictionary<Type, Func<object, object, bool>>()
{
{typeof(Person), (o1, o2) => ((Person) o1).Id == ((Person) o2).Id},
};