1. ホーム
  2. c#

[解決済み] メソッドからAnonymous Typeを返す方法はありますか?

2023-08-21 06:02:58

質問

のようなメソッドを書くことができないのは知っています。

public var MyMethod()
{
   return new{ Property1 = "test", Property2="test"};
}

それ以外でもできる

public object MyMethod()
{
   return new{ Property1 = "test", Property2="test"}
}

が、2番目のオプションはやりたくありません。そうすると、リフレクションを使わなければならないからです。


なぜそうしたいのか。

今日、私は自分のaspxページ内に、結果としてデータテーブルを返すメソッドを持っています。 それを変更することはできません 私は、このデータテーブルを、私が作業したいプロパティを持つ匿名メソッドに変換しようとしていました。私はそれを行うためだけにクラスを作成したくなかったし、私は同じクエリを複数回実行する必要があるので、私は匿名の型を返すメソッドを作成することは良いアイデアだろうと思った。

どのように解決するのですか?

として返す。 System.Object だけ であり、これはメソッドから無名型を返すための唯一の方法です。 残念ながら、無名型はこの方法での使用を防ぐために特別に設計されているので、これを行うための他の方法はありません。

を返すのと同時に、いくつかのトリックを行うことができます。 Object を返すのと同時に行うことで、それに近づけることができます。 この回避策に興味がある方は、以下をお読みください。 メソッドから無名型を返せない?本当に? .

免責事項です。 私がリンクした記事が回避策を示しているにもかかわらず、それを行うのが良いアイデアであることを意味するわけではありません。 通常の型を作成する方が安全で理解しやすい場合は、この方法を使用することを強くお勧めします。