获取对象的实例名称,而不是C#4.0中的对象类型名称

Sae*_*eid 5 .net c# reflection c#-4.0

假设这种类型:

public class Car { } 
Run Code Online (Sandbox Code Playgroud)

我创建了一个实例:

Car myCar = new Car();

Target target = new Target();
target.Model = myCar;
Run Code Online (Sandbox Code Playgroud)

这是另一种类型:

public class Target {

   public object Model { get; set; }

   string GetName(){

     //Use Model and return myCar in this Example
   }

}
Run Code Online (Sandbox Code Playgroud)

正如我在代码中展示的那样,该GetName方法必须使用对象类型(Model)并在此示例中返回myCar实例的名称?你有什么办法可以做到这一点?

更新 如何:

public class Car {

  public string Title { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我传递给目标: target.Model = Car.Title

GetName()返回方法Title

Aak*_*shM 5

对象没有名称,除非它们明确有存储名称的方法。myCar是一个局部变量 - 对象本身(Car不知道您通过名称引用它myCar。为了显示:

Car myCar = new Car();
Car car2 = myCar;
Car car3 = myCar;
Run Code Online (Sandbox Code Playgroud)

现在所有三个变量都引用相同 Car.

如果你想让汽车有名字,你可以这样做

public class Car 
{
    public string Name { get; set; }
} 
Run Code Online (Sandbox Code Playgroud)

然后分配并读取您想要的任何名称。


Dar*_*mas 3

不,这是不可能的。为什么?因为myCar这只是您为其设置变量的范围内的实例的名称。保存的是对实例的引用。因此,在示例代码之后, 和都引用相同的实例,只是名称不同。名称本身对于程序的执行来说并不重要,这只是我们用来使谈论实例更容易的一个技巧。Cartarget.ModelCarmyCartarget.ModelCar