一千萬個為什麽

搜索

從類型名稱的字符串表示形式轉換為類型

sTypeName = ... //do some string stuff here to get the name of the type

/*
The Assembly.CreateInstance function returns a type
of System.object. I want to type cast it to 
the type whose name is sTypeName.

assembly.CreateInstance(sTypeName)

So, in effect I want to do something like:

*/

assembly.CreateInstance(sTypeName) as Type.GetType(sTypeName);

我怎麽做?而且,假設這是C#2.0,我在賦值表達式的左側做什麽。我沒有var關鍵字。

最佳答案

在您的類中定義一個泛型方法,然後您可以像這樣進行轉換:

 public T Cast(object obj)
 {
      return (T) obj;
 }

 string sTypename = "SomeClassName"; 
 MethodInfo cast = this。GetType()。GetMethod("Cast");
 MethodInfo genericCast = cast。MakeGenericMethod(new Type[] { Type。GetType(sTypename) });
 Object castedValue = genericCast。Invoke(this, new object[] { instanceToBeCasted });

但是我認為,如果你不能將轉換值存儲在實際類型的變量中,那麽這種轉換的重點是什麽,正是因為你在編寫時沒有知道實際的類型。碼?

轉載註明原文: 從類型名稱的字符串表示形式轉換為類型