68

クラス名を取得してC#で文字列に変換する方法はありますか?

Entity Framework の一部として、.Include メソッドは、クエリの実行時に結合する文字列のドット区切りリストを受け取ります。参加したいクラスモデルがあり、リファクタリングと将来のコードメンテナンスの理由から、このクラスを参照するときにコンパイル時の安全性を確保したいと考えています。

したがって、私がこれを行うことができる方法はありますか:

class Foo
{
}

tblBar.Include ( Foo.GetType().ToString() );

インスタンスなしで GetType() を実行できるとは思いません。何か案は?

4

7 に答える 7

109

はメソッドである.GetType()ため、インスタンスなしでは使用できません。GetType

次のように、タイプから名前を取得できます。

typeof(Foo).Name

クリスが指摘したように、アセンブリ修飾名が必要な場合は、使用できます

typeof(Foo).AssemblyQualifiedName
于 2008-10-07T18:17:22.340 に答える
12

インクルードには、クラス名ではなくプロパティ名が必要です。したがって、これは必要なプロパティの名前であり、そのタイプの名前ではありません。 あなたはリフレクションでそれを得ることができます

于 2008-10-07T18:21:19.757 に答える
8

次のようなこともできます。

Type CLASS = typeof(MyClass);

そして、名前、名前空間などにアクセスできます。

 string CLASS_NAME = CLASS.Name;
 string NAMESPACE = CLASS.Namespace;
于 2012-10-02T14:21:10.150 に答える
2
typeof(Foo).ToString()

?

于 2008-10-07T18:17:44.007 に答える
0

DbSet<contact>の代わりに を使用ObjectSet<contact>できるため、ラムダをパラメーターとして使用できます。tblBar.Include(a => a.foo)

于 2011-07-15T19:06:20.893 に答える