2017-01-14 5 views
1

以前は、あるタイプが他のタイプから割り当て可能かどうかを確認することができました。私はジェネリックベースクラスでこれを必要とします。Type.IsAssignableFromのAsp.netコア相当

this.GetType().IsAssaignableFrom(otherObject.GetType()) 

どのように私はasp.netコアで同じことを達成できますか?

答えて

4

ここで確認してください:https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/。具体的には、「リフレクション」のセクションを参照してください。

は引用すると:

のC#のvarメンバー= obj.GetType()GetMembersを();。

にするSystem.Reflectionを使用

C位となります。 ... varメンバー= obj.GetType()。GetTypeInfo()。GetMembers();

明らかに、彼らは将来のバージョンの.netコアに戻しています。このページにはGithubのこの存在しないページにリンクしているページが表示されています:https://github.com/dotnet/apireviews/tree/master/2016-01-19-reflectionこれは明らかに反射名前空間の変化を説明しています。

+0

は、それはそれだった、ありがとう! System.Reflection.TypeInfoは.IsAssaignableFromメソッドを提供し、私はそれを取得することができますGetTypeInfoの拡張メソッド。 –

1

.NET Nativeの登場により、アプリケーションにフレームワークとサードパーティの依存関係を静的にリンクさせる技術があります。実行可能にするには、使用していないフレームワークの部分を識別できることが重要です。 C++のような他の技術では、これらのシステムはリフレクションのようなダイナミクスを持たないため、やや単純です。もちろん、.NETネイティブはまだリフレクションをサポートしていますが、プラットフォームをより使いやすくするため、使用していない機能の料金を支払う必要はありません。これは、リフレクションで特に当てはまります。これは、静的情報に基づいて実行時およびコンパイラが実行できることに重大な制約を課すためです。

理想的には、リフレクションは.NETコアのオプションのコンポーネントである必要があります。これは、アプリケーションではまったく使用しないことにします。トリッキーな部分は、System.ObjectがObject.GetType()を介したリフレクションに依存していることです。その依存関係を解消するために、System.Typeはもはや本格的な反射型の情報ではなく、型名のみを表すことにしました。つまり、.NET CoreのSystem.TypeにはGetMembers()などのAPIは含まれていませんが、NameなどのAPIは引き続き公開されています。

追加の型情報にアクセスするには、System.ReflectionにあるGetTypeInfo()という拡張メソッドを呼び出す必要があります。以前使用していたタイプのTypeInfoを返します。言い換えれば、次のようなコード行があります。

C# varメンバー= obj.GetType()。GetMembers();

にするSystem.Reflectionを使用

C# となります。 ... varメンバー= obj.GetType()。GetTypeInfo()。GetMembers();

.Met Blog

関連する問題