Как я могу создать временные объекты для передачи без явного создания класса?

Мне часто нужно создать класс в качестве контейнера для некоторых данных. Он используется ненадолго, но мне все еще нужно создать класс. Примерно так:

public class TempObject
{
    public string LoggedInUsername { get; set; }
    public CustomObject SomeCustomObject { get; set; }
    public DateTime LastLoggedIn { get; set; }
}


public void DoSomething()
{
    TempObject temp = new TempObject
    {
        LoggedInUsername = "test",
        SomeCustomObject = //blah blah blah,
        LastLoggedIn = DateTime.Now
    };
    DoSomethingElse(temp);
}

public void DoSomethingElse(TempObject temp)
{
    // etc...
}

Обычно мои временные объекты имеют намного больше свойств, поэтому я хочу сгруппировать их в первую очередь. Я бы хотел, чтобы был более простой способ, например, с анонимным типом. Проблема в том, что я не знаю, что принимать, когда передаю это другому методу. Тип является анонимным, так как я должен принять его с другой стороны?

public void DoSomething()
{
    var temp = new
    {
        LoggedInUsername = "test",
        SomeCustomObject = //blah blah,
        LastLoggedIn = DateTime.Now
    };
    // I have intellisense on the temp object as long as I'm in the scope of this method.
    DoSomethingElse(temp);
}

public void DoSomethingElse(????)
{
    // Can't get my anonymous type here. And even if I could I doubt I would have intellisense.
}

Есть ли лучший способ создать временный контейнер для группы разных типов, или мне нужно определять классы каждый раз, когда мне нужен временный объект для группировки вещей?

Заранее спасибо.

15
задан Chev 10 August 2011 в 22:57
поделиться