相同的方法,但不同的签名取决于.net框架版本

本文关键字:取决于 net 版本 框架 方法 | 更新日期: 2023-09-27 18:14:00

呃,不好意思,我真的不知道该怎么写才对(如果你看到更合适的,请修改)

我有一个DLL文件,我用于一个基于WinRT的项目(或者更确切地说,我在构建Universal Windows 10应用程序时使用它),我也将它用于"正常"桌面应用程序。但我的问题是,我使用System.Activator.CreateInstance<T>(typeof(T), true)能够创建一些类与私有构造函数。这适用于桌面应用程序。但是在WinRT上,方法CreateInstance<T>(...)不采用相同的参数。解决这个问题的最佳方法是什么?

我可以在运行时检查,如果我在WinRT上,或者如果它是一个"正常"的应用程序?在此基础上使用合适的签名?

(对不起,如果我使用的词WinRT错误等,我有一个很难掌握什么是什么与所有这些通用的应用程序术语飞)

相同的方法,但不同的签名取决于.net框架版本

由于沙盒安全约束,CreateInstance(Type, bool)过载在WinRT中不可用,这只留给您CreateInstance(Type)过载。但是,这将不允许您创建具有私有构造函数的类的实例。

您应该首先探索为什么需要使用私有构造函数创建类的副本。类的作者并不打算让第三方使用它,因此创建实例是有风险的。如果类有一个受保护的构造函数,那么你总是可以从这个类派生,并给你的新类一个公共构造函数。如果它是私人的,那么你就倒霉了!一种选择可能是联系类的作者,如果可能的话,请他们将其公开。