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?
对象没有名称,除非它们明确有存储名称的方法。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)
然后分配并读取您想要的任何名称。
不,这是不可能的。为什么?因为myCar这只是您为其设置变量的范围内的实例的名称。保存的是对实例的引用。因此,在示例代码之后, 和都引用相同的实例,只是名称不同。名称本身对于程序的执行来说并不重要,这只是我们用来使谈论实例更容易的一个技巧。Cartarget.ModelCarmyCartarget.ModelCar