我正在研究一个包含多个项目的解决方案,并Newtonsoft.Json在一个项目(类库)中进行了更新.这在另一个项目(ASP.Net WebApi项目)中引起了一些错误,因为它还需要Newtonsoft.Json更新引用.
错误是在运行时而不是编译时抛出的,我不得不Newtonsoft.Json在解决方案中的每个项目上手动安装.
Install-Package Newtonsoft.Json
Run Code Online (Sandbox Code Playgroud)
这让我想知道是否有可能在解决方案级别更新所有第三方库?
我知道你可以创建一个文件夹来存储库并将其添加到源代码控制中,但我想避免这种情况.
我希望Nuget在从存储库中获取解决方案后下载库.我想知道是否有可能:
www.solution.com.thirdparty www.solution.com.thirdparty我不知道如何才能完成第三步,我也知道是否有更好的方法可以做到这一点?
Angular 通过 FormBuilder 类引入了模型驱动表单,该类的主要方法group具有如下签名:
group(controlsConfig: {
[key: string]: any;
}): FormGroup;
Run Code Online (Sandbox Code Playgroud)
实际上是any一个格式如下的数组:
[
initial value of model's property,
sync validator(s),
async validator(s)
]
Run Code Online (Sandbox Code Playgroud)
仅需要第一个元素的地方。
我决定我想要比这更强类型的东西,特别是与强类型模型相关的任何东西,所以我根据 T 重新定义了该函数:
declare interface FormBuilder2 extends FormBuilder {
group<T>(controlsConfig: {
[K in keyof T]?: [T[K], ValidatorFn | ValidatorFn[] | null, ValidatorFn | ValidatorFn[] | null];
}): FormGroup;
}
Run Code Online (Sandbox Code Playgroud)
这也意味着 HTML 中的所有 formControlName(当然还有这里的 group() 调用)必须与模型的属性匹配,这是我更喜欢的。
这似乎可行,但有一个问题:
this.optionsForm = this.formBuilder2.group<CustomerModel>({
status: [this.model.status, [Validators.required], null],
lastOrder: [this.model.lastOrder, null, null],
comments: [this.model.comments, null, null],
}); …Run Code Online (Sandbox Code Playgroud) 假设我们有一个 JavaScript 类:
var Person = (function () {
function Person(name, surname) {
this.name = name;
this.surname = surname;
}
Person.prototype.saySomething = function (something) {
return this.name + " " + this.surname + " says: " + something;
};
return Person;
})();
Run Code Online (Sandbox Code Playgroud)
我想迭代它的方法和属性。我对这些方法没有问题。
var proto = Person.prototype,
methods = Object.keys(proto);
// iterate class methods ["saySomething"]
for (var i = 0; i < methods.length; i++) {
// do something...
}
Run Code Online (Sandbox Code Playgroud)
当我想迭代它的属性时,我的问题出现了:
var proto = Person.prototype,
targetInstance = new Person(), // this …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写以下方法:
public async Task<string> GetJson(string url,
Dictionary<string,string> parameters = null){
// parameters?
if (parameters != null) {
if (parameters.Count > 0) {
url += "?";
foreach(var key in parameters.Keys){
// add parameter to url
url += String.Format("{0}={1}", key, parameters[key]);
// more parameters?
if(!parameters.Keys.Last ().Equals(key)){
url += "&";
}
}
}
}
// send request
var uri = new Uri(url);
var req = new HttpClient();
Task<string> getJsonTask = req.GetStringAsync(uri);
// EXCEPTION : 'Cannot await on Task<string>'
return await getJsonTask;
}
Run Code Online (Sandbox Code Playgroud)
我在编译时遇到错误.我不认为问题是语法.我认为是一个依赖问题.我的参考资料是: …
我一直在尝试使用参数装饰器@logParameter:
class Person {
public name: string;
public surname: string;
constructor(name : string, surname : string) {
this.name = name;
this.surname = surname;
}
public saySomethingAsync(something: string, @logParameter cb: (said : string) => void) {
cb(this.name + " " + this.surname + " says: " + something);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试实现装饰器时。我对目标所做的所有更改都被忽略。
我一直在阅读一些文档,但参数装饰器无法修改目标。
参数装饰器函数是一个接受三个参数的函数:包含被装饰参数的函数、成员的属性键(或对于构造函数的参数未定义)和参数的序数索引。忽略此装饰器的返回值。
文档说我可以使用参数装饰器进行注释
注释目标和索引
然后使用方法装饰器读取注释。这将是类似的东西:
@readParameterAnnotations
public saySomethingAsync(something: string, @logParameter cb: (said : string) => void) {
cb(this.name + " " + …Run Code Online (Sandbox Code Playgroud) 我已经使用以下函数创建了一段时间未知类的实例:
Kernel.prototype._construct = function (constr, args) {
function F() {
constr.apply(this, args); // EXCEPTION!
}
F.prototype = constr.prototype;
return new F();
};
Run Code Online (Sandbox Code Playgroud)
如果我使用原型,一切正常:
function Person(name, surname) {
this.name = name;
this.surname = surname;
}
var person = Kernel._construct(Person, ["name", "surname"]); // WORKS!
Run Code Online (Sandbox Code Playgroud)
但是,有些人在节点v4 +中使用我的库使用ES6本机类:
class Person {
constructor(name, surname) {
this.name = name;
this.surname = surname;
}
}
var person = Kernel._construct(Person, ["name", surname]); // EXCEPTION!
Run Code Online (Sandbox Code Playgroud)
他们收到一个错误:
TypeError: Class constructors cannot be invoked without 'new'
Run Code Online (Sandbox Code Playgroud)
我需要能够使用未知数量的参数调用构造函数.关于如何解决这个问题的任何想法?
因此,我正在尝试学习FP,而我正试图了解参考透明度和副作用.
我已经了解到在类型系统中明确显示所有效果是保证参照透明度的唯一方法:
"主要是功能性编程"的想法是不可行的.通过仅部分消除隐含的副作用,使命令式编程语言更安全是不可能的.留下一种效果通常足以模拟你刚试图去除的效果.另一方面,允许在纯语言中"忘记"效果也会以自己的方式造成混乱.
不幸的是,没有黄金中间,我们面临着一个经典的二分法:排除中间的诅咒,它提出了(a)尝试使用纯度注释来驯服效果的选择,但完全接受了你的代码是仍然从根本上有效; 或者(b)通过在类型系统中明确表达所有效果并务实地完全接受纯度 - 来源
我还了解到,像Scala或F#这样的非纯FP语言不能保证引用透明性:
强制执行引用透明性的能力与Scala的目标是非常不兼容,即具有可与Java互操作的类/对象系统.- 来源
在非纯FP中,程序员需要确保参考透明度:
在ML,Scala或F#等不纯语言中,程序员需要确保引用透明性,当然在动态类型语言(如Clojure或Scheme)中,没有静态类型系统来强制引用透明性.- 来源
我对F#很感兴趣,因为我有.Net背景所以我的下一个问题是:
如果F#编译器没有强制执行F#应用程序,我该怎么做才能保证引用透明性?
f# functional-programming side-effects referential-transparency
我正在尝试通过CLR集成创建自定义SQL函数,但我遇到了T-SQL和CLR类型不匹配错误.
DLL:
Imports System
Imports System.Data
Imports Microsoft.SqlServer.Server
Public Class Encrypter_Decrypter
<SqlFunction(DataAccess:=DataAccessKind.Read)> _
Public Shared Function EncryptString(ByVal strItem As String)
Dim strPassPhrase As String = "***********"
Dim strInitVector As String = "***********"
Dim objEncryption = New PCI.Encryption()
objEncryption.Initialise(strPassPhrase, strInitVector, -1, -1, -1, "", "", 1)
Dim EncryptedString As String = objEncryption.Encrypt(strItem)
objEncryption = Nothing
EncryptString = EncryptedString
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
创建SQL函数:
CREATE ASSEMBLY EncrypterDecrypter
FROM 'c:\dll\Encrypter_Decrypter\Encrypter_Decrypter.dll'
WITH PERMISSION_SET = SAFE
GO
CREATE FUNCTION EncryptString(@strItem NVARCHAR(MAX)) RETURNS NVARCHAR(MAX)
AS EXTERNAL …Run Code Online (Sandbox Code Playgroud) 让我们假设我不使用SSL,而是在HTTP标头中发送令牌.令牌包含用户ID并已加密.
我可以想象一个中间人攻击者可以捕获令牌并使用它.如果我使用SSL,它应该足够安全吗?但如果我不使用SSL ......
我可以在令牌中添加一些内容,例如用户的IP,这样我就可以检查请求IP和令牌中的加密IP是否相同?
中间人攻击者可以伪造受害者的IP地址吗?生成令牌时,我可以使用任何其他用户相关信息吗?
谢谢!
我已经部署了一个函数应用程序,但没有可见的函数:
在 Kodu 中,我看到的似乎是正确的(文件位于 wwwroot 下):
在应用程序文件选项卡中。我可以看到两个文件夹分隔符,我猜这可能是问题所在:
我已WEBSITE_RUN_FROM_PACKAGE禁用并且正在部署:
az functionapp deployment source config-zip -g <resource-group> -n <app-name> --src ./deploy.zip
Run Code Online (Sandbox Code Playgroud) 我试图找出如何在LINQ中编写SQL语句,但目前我找不到办法,这是SQL命令:
SELECT cs.Site_Name, MAX(ed.EffectiveDate_Date)
FROM [WAPMaster].[Factsheets].[EffectiveDate] ed,
[WAPMaster].[Configuration].[Site] cs
WHERE cs.Site_Id = ed.EffectiveDate_SiteId
GROUP BY cs.Site_Name
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决linq语法吗?
**到目前为止我正在尝试这个(感谢levanlevi)
var test = (from e in this._wapDatabase.EffectiveDates
join c in this._wapDatabase.Sites
on c.Site_Id equals e.EffectiveDate_SiteId
group e by c.Site_Name into r
select new
{
r.Key.SiteName,
EffectiveDate = r.Max(d => d.EffectiveDate_Date)
});
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
我开始学习F#。我发现很难从OO编程中改变主意。我想知道F#开发人员将如何编写以下内容:
“传统” C#
public List<List<string>> Parse(string csvData){
var matrix = new List<List<string>>();
foreach(var line in csvData.Split(Environment.NewLine.ToArray(), StringSplitOptions.None)){
var currentLine = new List<string>();
foreach(var cell in line.Split(','){
currentLine.Add(cell);
}
matrix.Add(currentLine);
}
return matrix;
}
Run Code Online (Sandbox Code Playgroud)
“功能性” C#
public List<List<string>> Parse(string csvData){
return csvData.Split(Environment.NewLine.ToArray(), StringSplitOptions.None).Select(x => x.Split(',').ToList()).ToList();
}
Run Code Online (Sandbox Code Playgroud)
问题是:下面的代码是否正确?
F#
let Parse(csvData:string) =
csvData.Split(Environment.NewLine.ToArray(), StringSplitOptions.None).ToList()
|> Seq.map(fun x -> x.Split(',').ToList())
Run Code Online (Sandbox Code Playgroud) c# ×3
typescript ×3
.net ×2
f# ×2
javascript ×2
linq ×2
node.js ×2
access-token ×1
angular ×1
annotations ×1
api ×1
asp.net-mvc ×1
async-await ×1
azure ×1
clr ×1
constructor ×1
decorator ×1
deployment ×1
ecmascript-6 ×1
generics ×1
group-by ×1
integration ×1
interface ×1
max ×1
nuget ×1
oop ×1
pipeline ×1
reflection ×1
rest ×1
security ×1
side-effects ×1
sql ×1
sql-server ×1
ssl ×1
t-sql ×1
types ×1
xamarin ×1