[C#] Передача анонимных классов между методами

6yrop

Поскольку нам такое не сделали (хотя обещали). Предлагается давать классам тупо цифровые имена: C001, C002 и т.д. Вас такое шокирует?

static void Main
{
var someMethod = SomeMethod;
Console.WriteLine(someMethod.FirstName, someMethod.LastName);
}

private static C001 SomeMethod
{
return new C001("s1", "s2");
}

private class C001
{
public readonly string FirstName;
public readonly string LastName;

public C001(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}

mihadjan

Есть грязный хак следующего вида, в какой-то мере решающий задачу


public static T CastByExample<T>(this object obj, T example)
{
return (T) obj;
}

...

var v = obj.CastByExample(new { FullName = "" });


Но я не уверен, что этот вариант сильно лучше.

6yrop

да, я где-то видел похожее (наверное, через dynamic еще короче будет но это категорически неприемлемо поскольку нет статической типизации.

mihadjan

Если нужна стат. типизация при передаче между методами, то м.б. посмотреть в сторону туплов (tuples)?

6yrop

если имеются ввиду те туплы которые сейчас, то в них нельзя дать свои имена пропертям, использовать Item1, Item2 не удобно.
Оставить комментарий
Имя или ник:
Комментарий: