gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:37 24 4
gpt4 key购买 nike

抱歉,标题不好,真的不知道什么是正确的(如果您看到更合适的内容,请更改)。

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

我能否在运行时检查我是在 WinRT 上还是“正常”应用程序?并基于此使用适当的签名?

(抱歉,如果我用错了 WinRT 这个词等等,我很难理解所有这些到处乱飞的通用应用程序术语是什么)

最佳答案

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

您可能首先应该探索为什么需要创建具有私有(private)构造函数的类的副本。该类的作者并不打算让第三方使用它,因此创建实例是有风险的。如果该类有一个 protected 构造函数,那么您始终可以从该类派生并为您的新类提供一个公共(public)构造函数。如果它是私有(private)的,那么你就不走运了!一种选择可能是联系类(class)的作者,并要求他们将其公开(如果可能)。

关于c# - 相同的方法但不同的签名取决于 .NET 框架版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32716400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com