私はジェネリック型を持っており、この型のインスタンスを作成するためにStore<T>
使用しています。Activator
Activator を使用した後、結果の型のオブジェクトをobject
インスタンス化された型に戻すにはどうすればよいでしょうか? ジェネリックをインスタンス化するために使用した型を知っています。次のコードを参照してください。
class Store<T> where T : IStorable
{}
class Beer : IStorable
{}
class BeerStore : Store<Beer>
{}
Type storeType = someObjectThatImplementsIStorable.GetType();
Type classType = typeof(Store<>);
Type[] typeParams = new Type[] { storeType };
Type constructedType = classType.MakeGenericType(typeParams);
object x = Activator.CreateInstance(constructedType, new object[] { someParameter });
私がやりたいことは次のようなものです:
var store = (Store<typeof(objectThatImplementsIStorable)>)x;
しかし、それは明らかな理由で機能しません。別の方法として、私が試した:
var store = (Store<IStorable>)x;
私の意見ではおそらくうまくいくかもしれませんが、InvalidCastException
.
Store<T>
object 内にあることがわかっているメソッドに再度アクセスするにはどうすればよいx
ですか?