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

在C#4.0中获取对象的实例名称,而不是对象类型名称,c#,.net,c#-4.0,reflection,C#,.net,C# 4.0,Reflection,假设这种类型: public class Car { } 我创建了一个实例: Car myCar = new Car(); Target target = new Target(); target.Model = myCar; 这是另一种类型: public class Target { public object Model { get; set; } string GetName(){ //Use Model and return myCar in thi

假设这种类型:

public class Car { } 
我创建了一个实例:

Car myCar = new Car();

Target target = new Target();
target.Model = myCar;
这是另一种类型:

public class Target {

   public object Model { get; set; }

   string GetName(){

     //Use Model and return myCar in this Example
   }

}
正如我在代码中所示,
GetName
方法必须使用对象类型(
Model
),并在本例中返回实例的名称,即myCar?你有什么建议?有什么办法吗

更新 这个怎么样:

public class Car {

  public string Title { get; set; }

}
然后我传给target:
target.Model=Car.Title


GetName()
方法返回的
Title

对象没有名称,除非它们明确有一种存储名称的方法
myCar
是一个局部变量-对象本身(即
Car
不知道您用名称
myCar
引用它。举例说明:

Car myCar = new Car();
Car car2 = myCar;
Car car3 = myCar;
现在,所有三个变量都指向相同的
汽车

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

public class Car 
{
    public string Name { get; set; }
} 
然后分配并读取您想要的任何名称。

没有“实例名称”这样的东西。您所说的是对象的特定引用的名称;同一个对象可能有许多引用,所有引用都具有不同的名称。此外,链接代码和数据(即依赖变量名)也是一种不好的做法

如果您希望
Car
有一些名称,请明确地将其命名为

public class Car {
    public string Name { get; set; }
} 

Car myCar = new Car { Name = "myCar" };

不,这是不可能的。为什么?因为
myCar
只是设置变量的范围内的
Car
实例的名称。保存到
target.Model
的是对
Car
实例的引用。因此,在示例代码之后,
myCar
target.Model
都引用了
Car
的相同实例,只是名称不同。名称本身对程序的执行并不重要,这只是我们用来简化实例讨论的一个技巧。

变量名称在业务逻辑中没有任何意义,也不应该有任何意义。因此,如果更改变量名称,事情就会破裂。为什么
Model
只是一个对象,而不是
Car
(或者它的一个子类)?不清楚
Target
的意义是什么。但是您可能希望执行
Target.Model=myCar
,然后可能稍后将其转换回
Car
,并访问
Title
属性。因此类似于
Car-Car=Target.Model as Car;if(Car!=null){//对您的Car对象执行操作}
。好吧,你总是可以返回一个姓名列表…只是开玩笑;-)+1.我更新你现在的想法?我更新你现在的想法?