実行時に選択してインスタンス化するいくつかのクラスがあります。たとえば:実行時に生成される型を使用します。
public class MyClassA{
public int property1 {get; set;}
public string property2 {get; set;}
}
public class MyClassB{
public int property1 {get; set;}
public string property3 {get; set;}
}
はMyClassBは、実行時に選択された、のは、言ってみましょう:今すぐ
Type t = Type.GetType("MyNamespace.MyClassB");
Object myType = Activator.CreateInstance(t);
が、私はこのような他のクラス/メソッドに渡すタイプとしてMYTYPEを使用したいと思います。
myType myDeserializedObject = JsonConvert.DeserializeObject<myType>(MyJsonString);
「myTypeは変数ですが型として使用されています」というエラーがコードをコンパイルしません。
アクティブ化されたインスタンスをタイプに変換する方法や回避策はありますか?私が調べなければならない他のアプローチがあるかどうかを教えてください。 ありがとう!
ちょうど '辞書<文字列、オブジェクト>'にdeseralizingたほうが良いかもしれませんか、単に '代わりに作成したクラスにdesearalizeしようとしているの' JObject.Parse(MyJsonString)を使用しますランタイム。 –
以下の答えがうまくいかない場合( 'Type'を受け入れる非ジェネリックメソッドが利用可能になっていないため)、リフレクションマジックを動的に呼び出すことができます:https://stackoverflow.com/a/ 232621/455493 – Tseng