2016-10-05 6 views
-2

モデルクラスを変数として保存し、すべてのコードで動的に使用したいと思います。たとえば、私は次のようなものを持っています:C#変数を変数として動的に貼り付けます

IEnumerable<Student> students = GetAllStudents(); 

通常、私は常にStudentクラスを宣言して再入力する必要があります。しかし、私はそれを宣言する必要がありますし、その後、それを私のコードで動的に使用します。単純に私はこのような何かをしたい:

Student dynamicType; 

ことが可能できるようにした後:

IEnumerable<dynamicType> students = GetAllStudents(); 

あなたは私が右の解決策を見つけるのを助けることができますか?このようなことは可能でしょうか? ありがとうございました

+0

直接の「学生」を使用している問題は何ですか? – Mostafiz

+2

[C#でクラス名をエイリアスするにはどうすればいいですか?](http://stackoverflow.com/questions/244246/how-do-i-alias-a-class-name-in-c) –

+0

@Mostafiz私は一度だけ、それを宣言したいので.....私は私のコントローラに機能を持っており、それは宣言で始まります。 'IEnumerableを学生= GetAllStudents();' をしかし、イム後、いくつかの一般的な方法の例を呼び出す: '学生= iQueryableStudents.Where(MyGenericFunction (何か、何か));' StriplingWarriorで言及したタイプの別名に私は、エイリアスを使用することができますし、私はクラスを変更し、どこかに私のコードをaplyする必要があると私は(だけのエイリアスを変更することができる場合1カ所のみ)。 これは悪い考えだと思いますか? – user6926954

答えて

1

「ダイナミック」とはどういう意味ですか。

クラス名「Students」を使いたくない場合は、タイプエイリアスを探しています。

using dynamicType = MyNameSpace.Student; 

... 
IEnumerable<dynamicType> students = GetAllStudents(); 

コードの別の部分からどのタイプを扱っているのかを指定できるようにするには、ジェネリックスを探しています。あなたはそれに関連付けられている任意の特定のタイプを持つことなく、クラスと対話することができるようにしたい場合は

void DoSomething<T>() 
{ 
    IEnumerable<T> things = GetAllThings<T>(); 
    ... 
} 

... 
DoSomething<Student>(); 

、あなたはdynamicキーワードを探しています。

IEnumerable<dynamic> students = GetAllStudents(); 
foreach(var student in students) 
{ 
    dynamic studentFoo = student.foo; // no type checking 
} 

あなたはどこでも「学生」を入力しないようにしたいが、あなたは本当にあなたのIEnumerable Student Sを静的にチェックするために、そしてあなただけのvarキーワードを使用することをお勧めします。\

にアイテムをしたいです場合
var students = GetAllStudents(); 
+0

ありがとうStriplingWarrior! dynamicType = MyNameSpace.Studentを使用して 、あなたはタイプの別名を探している、学生 『「あなただけのクラス名を使用したくない場合は、』 ;。 ... IEnumerableを学生= GetAllStudents( ); " これは私にとって正しい答えでした:-) – user6926954

関連する問題