对不好的头衔抱歉,真的不知道什么是正确的(如果你看到更合适的话,请改变)。
我有一个DLL文件,我用于基于WinRT
的项目(或者我在构建Universal Windows 10
应用程序时使用它),我也将它用于&#34;普通& #34;桌面应用。但我的问题是我使用System.Activator.CreateInstance<T>(typeof(T), true)
能够使用私有构造函数创建一些类。这适用于桌面应用程序。但是在WinRT上,方法CreateInstance<T>(...)
没有采用相同的参数。什么是解决这个问题的最佳方法?
我可以在运行时检查我是否在WinRT上,或者它是否正常&#34;应用?并在此基础上使用适当的签名?
(对不起,如果我使用WinRT这个词错误等等,我很难掌握所有这些通用应用程序术语飞来飞去的内容)
答案 0 :(得分:0)
由于沙盒安全限制,int
重载在WinRT中不可用,这只会导致getchar()
超载。但是,这不允许您创建具有私有构造函数的类的实例。
您可能应该首先探索为什么需要使用私有构造函数创建类的副本。该类的作者并不打算让它被第三方使用,因此创建一个实例是有风险的。如果类具有受保护的构造函数,那么您始终可以从类派生并为新类提供公共构造函数。如果它是私人的,那么你运气不好!一种选择可能是联系班级作者并要求他们公开,如果可能的话。