2017-10-16 18 views
2

.NET Frameworkにはメソッドを簡単に反映させることができます。例:.NET Standardプロジェクトで.NET標準でGetMethodに相当する

var methodInfo = typeof(object).GetMethod("MemberwiseClone", bindingFlags); 

は、しかし、コンパイラは文句:

エラーCS1061: '種類' 'はGetMethod' と なし拡張メソッドの定義が含まれていません 'GetMethod' 受諾しますタイプ 「タイプ」の最初の引数は見つけることができる(あなたがusingディレクティブまたは アセンブリ参照が不足している?)

Q:.NET Standardを使用して同等の反射をどのように実行しますか?

答えて

6

すべて .NET Core 1.xでは、Typeの代わりにTypeInfoが必要です。

あなたが望むようGetTypeInfoの拡張メソッドは、System.Reflection名前空間にあります:

using System.Reflection; // For GetTypeInfo 
... 
var methodInfo = typeof(object).GetTypeInfo().GetMethod("MemberwiseClone", bindingFlags); 

TypeInfo.GetMethod()が1.6より前の.NET標準は存在しませんが、1.0以降でTypeInfo.DeclaredMethodsされていること。

.NET Standard 2.0は、System.Typeに再導入されました(デスクトップフレームワークの大部分を.NET標準に戻すための一環として)。2.0+をターゲットにするときにこのフープを通過する必要はありません。

+1

注目すべきことは、.NET Standard 2.0では、単にtypeof(オブジェクト).GetMethod' – Evk

+0

@Evk:Yupを実行することができます。 –

+0

1.6とVS 2017.4が付属しているようです。 – l33t

関連する問題