C#如何获取呼叫者的呼叫者成员名称?

时间:2020-02-11 21:48:05

标签: c#

我正在尝试实现一个Enumeration class,我想在该类的构造函数中自动分配一个Name字段。

这是我要改进的工人阶级,还有一个示例子类:

public abstract class Enumeration<E> : IComparable where E : Enumeration<E>
{
    public readonly int Id;
    public readonly string Name;

    private static int _count;
    protected Enumeration(string name)
    {
        Id = _count++;

        Name = name;
    }

    // etc
}

public class Color : Enumeration<Color>
{
    public readonly static Color Red = new Color(1, 0, 0);
    public readonly static Color Green = new Color(0, 1, 0);
    public readonly static Color Blue = new Color(0, 0, 1);

    public readonly float R;
    public readonly float G;
    public readonly float B;

    private Color(float r, 
                  float g, 
                  float b,
                  // I wanna move this to super
                  [CallerMemberName]
                  string name="") : base(name)
    {
        R = r;
        G = g;
        B = b;
    }

    // etc
}

那么有可能做到这一点吗?

1 个答案:

答案 0 :(得分:0)

这里可以免费获取名称,但是您必须对RGB值使用entity.module.ts类型(不确定到底为什么要使用float,它们应该是整数):

<router-outlet>

但是,至少在您当前的实现中,这对我来说似乎是代码的味道。我不确定为什么您要创建它而不是仅使用.NET <router-outlet>类型,但这与我无关。

请注意,如果传递没有意义的RGB,这(显然)将以int中断。另外,请确保考虑到未知的颜色(这仅适用于已知的颜色)。

祝你好运!