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

时间:2015-09-22 12:02:27

标签: c# .net windows-runtime win-universal-app uwp

对不好的头衔抱歉,真的不知道什么是正确的(如果你看到更合适的话,请改变)。

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

我可以在运行时检查我是否在WinRT上,或者它是否正常&#34;应用?并在此基础上使用适当的签名?

(对不起,如果我使用WinRT这个词错误等等,我很难掌握所有这些通用应用程序术语飞来飞去的内容)

1 个答案:

答案 0 :(得分:0)

由于沙盒安全限制,int重载在WinRT中不可用,这只会导致getchar()超载。但是,这不允许您创建具有私有构造函数的类的实例。

您可能应该首先探索为什么需要使用私有构造函数创建类的副本。该类的作者并不打算让它被第三方使用,因此创建一个实例是有风险的。如果类具有受保护的构造函数,那么您始终可以从类派生并为新类提供公共构造函数。如果它是私人的,那么你运气不好!一种选择可能是联系班级作者并要求他们公开,如果可能的话。