次の Windows ランタイム ソリューションのセットアップがあります。
私のEXEによって参照されるDLLで
public abstract class BaseClass {
public BaseClass(Guid id, string name) {
//...
}
}
エグゼでは
public sealed class DerivedClass : BaseClass {
}
DLL には、BaseClass実行時に指定される のサブタイプを使用する別のクラスもあります。基本クラスにはコンストラクターがあるため、次のようにインスタンス化できると考えました。
//this._userType holds the type of DerivedClass
BaseClass foo = (BaseClass)Activator.CreateInstance(this._userType, id, name);
ただし、コンストラクターが見つからないことが通知されます。Typeだから私は行って、の方法を使用できると言った他の回答を見つけましGetConstructor()たが、それはWinRTには存在しないようです。プロパティはありDeclaredConstructorsますが、 で明示的に宣言されているコンストラクターのみをリストしていますDerivedClass。 DerivedClassこの特定のコンストラクター以外に何もする必要はないのでBaseClass、呼び出す明示的なコンストラクターを書き出すのは嫌ですbaseが、それが唯一のオプションである場合はお知らせください (このアプローチが機能することを確認しました)。