用于创建新对象并设置其属性的类似 Linq 的扩展?如何?
Linq-Like extension for creating a new object and setting its properties? How to?
我正在尝试为类型对象创建一个扩展方法,它将创建一种初始化对象和设置其属性的新方法。然而,我 运行 遇到了一些问题。扩展名如下所示:
public static class ObjectExtension
{
public static TResult Select<TSource,TResult>(this TSource obj, Func<TSource, TResult> selector)
{
return selector.Invoke(obj);
}
}
这就是我正在寻找的结果:
return new Product().Select(p => p.Category = new Category(), p.Name = "something");
你可能会说我的理解太少了。我无法理解 Func 的概念以及如何使用它们。我的问题是这是否可能以及 how/what 我需要去完成这个方向吗?
我的灵感来源于此:Here
使用以下代码:
IEnumerable<int> squares =
Enumerable.Range(1, 10).Select(x => x * x);
我想做类似的事情,除了不是从列表中,并且能够设置多个属性。
这将修复您的代码:
return new Product().Select(p =>
{ p.Category = new Category(); p.Name = "something"; return p;});
您的问题是 "comma as function parameter separator" 优先于 "comma as a weird way of join expressions in C that doesn't work in C# anyway"。您需要那里的完整块 lambda 表达式。
但正如 Ed Plunkett 在他的评论中指出的那样,这可以简化为:
return new Product {Category = new Category(), Name = "something"};
我正在尝试为类型对象创建一个扩展方法,它将创建一种初始化对象和设置其属性的新方法。然而,我 运行 遇到了一些问题。扩展名如下所示:
public static class ObjectExtension
{
public static TResult Select<TSource,TResult>(this TSource obj, Func<TSource, TResult> selector)
{
return selector.Invoke(obj);
}
}
这就是我正在寻找的结果:
return new Product().Select(p => p.Category = new Category(), p.Name = "something");
你可能会说我的理解太少了。我无法理解 Func 的概念以及如何使用它们。我的问题是这是否可能以及 how/what 我需要去完成这个方向吗?
我的灵感来源于此:Here
使用以下代码:
IEnumerable<int> squares =
Enumerable.Range(1, 10).Select(x => x * x);
我想做类似的事情,除了不是从列表中,并且能够设置多个属性。
这将修复您的代码:
return new Product().Select(p =>
{ p.Category = new Category(); p.Name = "something"; return p;});
您的问题是 "comma as function parameter separator" 优先于 "comma as a weird way of join expressions in C that doesn't work in C# anyway"。您需要那里的完整块 lambda 表达式。
但正如 Ed Plunkett 在他的评论中指出的那样,这可以简化为:
return new Product {Category = new Category(), Name = "something"};