Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C的RoR委托等价物#_C#_Ruby On Rails - Fatal编程技术网

C# C的RoR委托等价物#

C# C的RoR委托等价物#,c#,ruby-on-rails,C#,Ruby On Rails,是否有一些模式/语法/库可供C#实现RubyonRails()上的委托助手方法 问题是,如果你在谷歌上搜索C#的委托,你只能找到关于C#委托概念的信息,这与rails中的概念略有不同 接下来,Javascript/Typescript是否也有等价物?在c#中没有等价物,您需要在每种情况下手动实现它(创建facade方法) 链接中的一个示例: class Foo CONSTANT_ARRAY = [0,1,2,3] @@class_array = [4,5,6,7] def ini

是否有一些模式/语法/库可供C#实现RubyonRails()上的委托助手方法

问题是,如果你在谷歌上搜索C#的委托,你只能找到关于C#委托概念的信息,这与rails中的概念略有不同


接下来,Javascript/Typescript是否也有等价物?

在c#中没有等价物,您需要在每种情况下手动实现它(创建facade方法)

链接中的一个示例:

class Foo
  CONSTANT_ARRAY = [0,1,2,3]
  @@class_array  = [4,5,6,7]

  def initialize
    @instance_array = [8,9,10,11]
  end
  delegate :sum, to: :CONSTANT_ARRAY
  delegate :min, to: :@@class_array
  delegate :max, to: :@instance_array
end

Foo.new.sum # => 6
Foo.new.min # => 4
Foo.new.max # => 11
可以翻译成c#作为:

公共类Foo
{
公共静态只读IReadOnlyList常量_数组=new[]{0,1,2,3};
公共静态int[]类_数组={4,5,6,7};
公共int[]实例_数组={8,9,10,11};
public int sum()=>CONSTANT_ARRAY.sum();
public int min()=>class_array.min();
public int max()=>this.instance_array.max();
}
...
新建Foo().sum();//=>6.
新建Foo().min();//=>4.
新建Foo().max();//=>11

为什么要这样做?这感觉像是一个XY问题-。这是将习语从一种语言带到另一种语言的常见模式,而这些习语在新语言中不一定有意义。你到底想达到什么目的?你为什么想要这个?对不起,我不认为这是一个XY问题,我想实现什么?确切地说,要知道C#是否有一种语法方法来完成委托助手在RoR中所做的事情。这是一个语言问题,适用于您不希望导航到父对象以获取属性值并直接从子对象使用的任何情况(这是隐含的,因为委托帮助器就是这样做的).我只想从社区了解是否有人有一些策略来完成类似的事情,以及他们是如何实施变通方法的。正是@Renat的答案。(不,没有等效项,但我使用此项)
public class Foo
{
    public static readonly IReadOnlyList<int> CONSTANT_ARRAY = new[] {0, 1, 2, 3};
    public static int[] class_array = {4, 5, 6, 7};

    public int[] instance_array = {8, 9, 10, 11};

    public int sum() => CONSTANT_ARRAY.Sum();
    public int min() => class_array.Min();
    public int max() => this.instance_array.Max();
}
...
new Foo().sum(); // => 6
new Foo().min(); // => 4
new Foo().max(); // => 11