Вопрос по .net, c#-4.0, c# – Получить имя экземпляра объекта без имени типа объекта в C # 4.0

5

Предположим этот тип:

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 в этом примере? каково ваше предложение, есть ли способ сделать это?

Update Как насчет этого:

public class Car {

  public string Title { get; set; }

}

И я перехожу к цели:target.Model = Car.Title

А такжеGetName() метод вернулсяTitle ?

ПочемуModel просто объект вместоCar (или его подкласс)? Rango
Так что, если вы измените имя переменной, вещи сломаются? VVS
Имя переменной не имеет и не должно иметь никакого смысла в бизнес-логике zerkms
Непонятно, в чем смыслTarget является. Но вы хотите сделатьtarget.Model = myCar а потом, вероятно, позже бросить его обратно вCar и получить доступ кTitle имущество. Так что-то вродеCar car = target.Model as Car; if (car != null) { // Do something with your car object }. Adrian Thompson Phillips

Ваш Ответ

3   ответа
4

если только у них нет явного способа сохранить свое имя.myCar является локальной переменной - сам объект (Car) does not know что вы называете это по имениmyCar, Проиллюстрировать:

Car myCar = new Car();
Car car2 = myCar;
Car car3 = myCar;

Теперь все три переменные относятся кsame Car.

Если вы хотите, чтобы у автомобилей были имена, вы могли бы сделать

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

а затем назначьте и прочитайте любое имя, которое хотите.

Я обновляю вопрос, что вы думаете сейчас? Saeid
Ну, вы всегда можете вернуть список имен ... просто шучу ;-) +1.
1

как «имя экземпляра». То, о чем вы говорите, - это название конкретной ссылки на объект; может быть много ссылок на один и тот же объект, все с разными именами. Кроме того, связывание кода и данных (т. Е. Использование имени переменной) является плохой практикой.

Если ты хочешьCar иметь какое-то имя, а затем назвать егоexplicitly:

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

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

myCar это толькоname для тебяCar примерinside область, для которой вы устанавливаете переменную. Что сохраняется вtarget.Model этоreference кCar пример. Итак, после вашего примера кода, обаmyCar а такжеtarget.Model ссылаться на тот же экземплярCarПросто с разными именами. Сами имена довольно не важны для выполнения программы, это просто хитрость, которую мы используем, чтобы упростить разговор об экземплярах.

Я обновляю вопрос, что вы думаете сейчас? Saeid
теперь я больше не знаю, чего ты хочешь достичь ...

Похожие вопросы