我做了大量的研究,没有找到任何合适的答案.这是场景.
我有一个编译为目标.NET Framework 4的应用程序.在运行时,我希望该应用程序实际在.NET Framework 4.6.1中执行.到目前为止我找到了两个选项.
选项1是不可取的,因为它需要重新发布软件.
选项2没有达到我的预期.它似乎检查是否安装了CLR 4.0(不是框架4.0),如果没有提示下载适当的SKU来安装它.安装后,应用程序仍在.NET Framework 4.0下执行
作为测试,以及发布此问题的原因,我创建了一个小型控制台应用程序,它只是这样做
Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol);
Run Code Online (Sandbox Code Playgroud)
如果是针对.NET Framework 4编译的,则输出为
Ssl3,Tls
如果是针对.NET Framework 4.6.1编译的,则输出为
Tls,Tls11,Tls12
情况1产生类型不匹配异常.案例2按预期工作.有谁有洞察原因?或者从Int32作为对象转换为Int16的更好方法?
情况1:
var i = (Int16)(object)Int32.Parse("1");
Run Code Online (Sandbox Code Playgroud)
案例2:
var i = (Int16)Int32.Parse("1");
Run Code Online (Sandbox Code Playgroud) 我想用通用约束实现泛型函数,传入的Type是一个接口.这可能在C#中吗?我没有约束它工作正常,但如果它不是一个接口,代码将在运行时失败,所以我想让编译时检查.
public T MyFunction<T> where T : {any interface type} { return null; }
Run Code Online (Sandbox Code Playgroud)