gpt4 book ai didi

c# - 在c#中传递函数数组

转载 作者:行者123 更新时间:2023-11-28 19:50:05 25 4
gpt4 key购买 nike

我想创建列验证器,我可以在其中传递自定义函数/方法。

编辑:我不需要动态构建这些函数,可以预先构建解决方案,并且我仅限于 .net 3.5。基本上我正在尝试为我的 SSIS 脚本进程创建可重用的类。

我不知道如何在 C# 中做到这一点,因此我在 JavaScript 中创建了我想要实现的快速表示 here

// Data extracted from file
var data = "2|User2|15\r\n3|User1|13";

// Define columns in file
var columnKeys = ["ID", "Username", "Age"];

// Custome column validation
var columnValidation = {
"ID": function (value) {
if (isNaN(value)) return false;
else return true;
},
"Username": function (value) {
return true;
},
"Age": function (value) {
return true;
}
};

var ValidateColumns = function (data, keys, rules) {
var rowSep = "\r\n";
var colSep = "|";

// Get rows
var rows = data.split(rowSep);
_.each(rows, function (row) {
// Get columns
var columns = row.split(colSep);

// Validate columns
_.each(columns, function (column) {
if (rules[keys[columns.indexOf(column)]](column)) {
console.log("Column " + keys[columns.indexOf(column)] + ": Passed");
}
else {
console.log("Column " + keys[columns.indexOf(column)] + ": Failed");
}
});
});
};

ValidateColumns(data, columnKeys, columnValidation);

问题:

  1. 如何创建要进入的函数/方法?
  2. 如何在类/方法中传递这些函数来验证列?

最佳答案

您应该阅读有关功能和操作的内容

如果你的函数返回一些东西(比如 bool 值!)和/或使用多个参数,你应该使用 Func<TReturn,TParam1,TParam2>[]并使用尽可能多的 TParam 参数。这些背后有很多功能,所以我建议您阅读一下。这个链接看起来不错:Explanation of Func

如果您的函数不接受任何参数并返回 void(抱歉,您的示例中不是这种情况),您可以使用 Action[],其使用方式如下:

Action action = () => //your function's code;
//Lame example of using Action[]
YourMethodThatTakesFuncAsParams(new Action[]{action,action,action});

如果您的所有函数返回不同的内容和/或使用不同的参数,我认为没有一个干净的解决方案可以实现此目的。

少量编辑(因为我无法评论内容!)我认为本的回答是解决您的问题最合适、最直接的方法

关于c# - 在c#中传递函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23638647/

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