ReSharper может сгенерировать код, который копирует свойства от одного объекта до другого?

Нет. Компилятор не может знать то, что возвратил бы тип jerry.callFriend("spike"). Кроме того, Ваша реализация просто скрывает бросок в методе без любой дополнительной безопасности типов. Рассмотрите это:

jerry.addFriend("quaker", new Duck());
jerry.callFriend("quaker", /* unused */ new Dog()); // dies with illegal cast

В этом конкретном случае, создавая метод краткого обзора talk() и переопределяя его соответственно в подклассах служил бы Вам намного лучше:

Mouse jerry = new Mouse();
jerry.addFriend("spike", new Dog());
jerry.addFriend("quacker", new Duck());

jerry.callFriend("spike").talk();
jerry.callFriend("quacker").talk();
38
задан a7drew 4 August 2009 в 17:52
поделиться

4 ответа

Я не верю, что Resharper может это сделать, но Open Source AutoMapper может. Впервые в AutoMapper? Посетите страницу Начало работы .

9
ответ дан 27 November 2019 в 03:28
поделиться

Вот простой класс для клонирования объекта. Это не совсем то, о чем вы просили, но, возможно, это будет полезно для вас:

//.Net 2.0
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;

namespace YourNameSpace {
   public static class ObjectCloner {
      public static T Clone<T>(T obj) {
         using (MemoryStream buffer = new MemoryStream()) {
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(buffer, obj);
            buffer.Position = 0;
            T temp = (T)formatter.Deserialize(buffer);
            return temp;
         }
      }
   }
}
1
ответ дан 27 November 2019 в 03:28
поделиться

Это тот вид вещей, для которого отлично подходит Cog . По сути, Cog - это инструмент для генерации кода. Код создается с помощью Python.

-1
ответ дан 27 November 2019 в 03:28
поделиться

Простое копирование значений с одной стороны на другую довольно уродливо.

Возможно, вам будет лучше создать метод для включения в ваши классы, который использует отражение для копирования общедоступных свойств. Вы можете сохранить этот метод в resharper, чтобы преобразовать его в другие классы, в которых вам нужна эта функция.

-2
ответ дан 27 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

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