我有以下结构:
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中拥有它的类的名称是什么。
答案 0 :(得分:2)
完全,完全,不可能。
单个实例可以由多个属性引用;对象与其引用的属性之间没有任何关联。 (除了GC,它不会告诉你它)
此外,JIT内联可能意味着财产不一定会涉及 另外,优化的二进制文件中不存在局部变量名称。
答案 1 :(得分:1)
我不认为你要求的是可能的。也许有一种方法可以让Bla的构造函数获取一个字符串,然后在创建实例时,可以传入字符串:
SomeProperty = new Bla("SomeProperty");
AnotherProperty = new Bla("AnotherProperty");
答案 2 :(得分:1)
你无法通过反思可靠地做到这一点,并且首先想要的是一个可怕的想法。可以在实例上调用方法而无需为其声明变量。例如:
string name=new Bla().Hello();
在这种情况下,您的方法会打印什么??