2011-09-09 11 views
22

ダイナミックは、何かのように宣言取得オブジェクトはラップされたオブジェクトのタイプではありません。ありがとう!あなたがこれを行う必要オブジェクトの種類は、私は、ダイナミックオブジェクトの型を取得したいと思い

+0

に思えます。私はあなたが持っているものに間違って何かを見ることはありません。 –

+1

未知の型の名前を出力した場合、「ObjectHandle」は基底の動的オブジェクトの型ではありません。 – user379429

答えて

23

...ところで

Type unknown = ((ObjectHandle)tmp).Unwrap().GetType(); 

が、これは少し混乱して...あなたは現在のアセンブリ内のタイプにActivator.CreateInstanceを呼び出す場合ので

Activator.CreateInstance(typeof(Foo)) 

...オブジェクトはラップされず、元のコードは正常に動作します。

+0

btw、これは、アセンブリが現在のappdomainに不必要にロードされるのを防ぐために行います。ラップを解除すると、ロードされます。 – x0n

4

あなたはActivator.CreateInstanceを使用することができます場合は、直接使用することができます。

object tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName); 
Type unknown = tmp.GetType(); 
+1

オブジェクトがダイナミクスと少し違うのですか? – amalgamate

-2

あなたが箱から出して考える場合、それは非常に簡単です。我々はより詳細な情報を必要とするように:-)

Type theType = dynamicItem.GetType(); 

ここにあなたが行く...

+0

ExcelとCOM InteropをExcelDNAを使用して使用する場合、Rangeオブジェクトのタイプは__ComObjectであり、有用ではありません。この場合、この記事を参照してください:https://fernandof.wordpress.com/2008/02/05/how-to-check-the-type-of-a-com-object-system__comobject-with-visual-c- net/getexceltypeforcomobject-method / –

関連する問題