在拥有类型c#上获取Propertyname

时间:2010-11-29 18:35:10

标签: c# reflection properties

我有以下结构:

class Bla
{
    public string Hello()
    {
        return "Hello my name is " + GetMyVariableName();

    }

    private string GetMyVariableName()
    {
        return "";//do magic here to determine the Variable name at the class that owns the Property
    }
}

class Fasel
{
    public Bla SomeProperty { get; set; }
    public Bla AnotherProperty { get; set; }

    void DoSomeAction()
    {
        SomeProperty = new Bla();
        AnotherProperty = new Bla();

        string name = SomeProperty.Hello(); //this sould return "Hello my name is SomeProperty"

        name = AnotherProperty.Hello(); ////this sould return "Hello my name is AnotherProperty"
    }
}

这看起来很容易解决,因为我只是做反射的东西来确定拥有类的名称,但在我的特殊情况下,我不能这样做。我需要知道在Property中拥有它的类的名称是什么。

3 个答案:

答案 0 :(得分:2)

完全,完全,不可能。

单个实例可以由多个属性引用;对象与其引用的属性之间没有任何关联。 (除了GC,它不会告诉你它)

此外,JIT内联可能意味着财产不一定会涉及 另外,优化的二进制文件中不存在局部变量名称。

答案 1 :(得分:1)

我不认为你要求的是可能的。也许有一种方法可以让Bla的构造函数获取一个字符串,然后在创建实例时,可以传入字符串:

SomeProperty = new Bla("SomeProperty");
AnotherProperty = new Bla("AnotherProperty");

答案 2 :(得分:1)

你无法通过反思可靠地做到这一点,并且首先想要的是一个可怕的想法。可以在实例上调用方法而无需为其声明变量。例如:

string name=new Bla().Hello();

在这种情况下,您的方法会打印什么??