public class Address
{...}
public class Object1
{
public Address Address {get;set;}
}
public class Object2
{
public Address Address {get;set;}
}
public UpdateAddress(Address address)
{
address = new Address();
}
//calling
var obj1 = new Object1();
UpdateAddress(obj1.Address);
//obj1.Address IS NULLПередача имущества по ссылке в метод (одноименная различные классы)
Я не могу иметь мои 2 классы наследуют от BaseClass, который имеет свойство Address (длинная история)
У меня создалось впечатление, что при передаче объектов в методы они ссылаются, а мой объект obj1.Address будет иметь новый и не будет null, если я передам это свойство в метод.
Если мое предположение неверно и, похоже, об этом объекте не передается ссылкой в этом случае.
Как я могу иметь общий метод, который я могу обновить свойство, которое одинаково во всех моих объектах (я знаю, что может вернуть новый объект адреса, но я предпочитаю, чтобы быть передан в вместо возвращения)
Можно ли это сделать, пройдя T <>?
ОБНОВЛЕНИЕ - Фактический код
Вызов методов
bool isVendorIdFromModel = UpdateVendor(entity.ExpenseVendor, entity.ExpenseVendorId, model, isNew, context);
if (isVendorIdFromModel)
{
entity.ExpenseVendorId = model.VendorId;
}
private static bool UpdateVendor(ExpenseVendor vendor, int? entityVendorId, ExpenseBaseModel model, bool isNew, ELMSContext context)
{
if (model.VendorId.HasValue)
{
if (entityVendorId != model.VendorId)
{
return true;
}
UpdateVendorInfo(model, vendor);
}
else
{
if (isNew && !string.IsNullOrEmpty(model.VendorName))
{
vendor = new ExpenseVendor
{
...
};
context.ExpenseVendors.Add(vendor);
}
if (vendor != null)
{
UpdateVendorInfo(model, vendor);
}
}
return false;
}
private static void UpdateVendorInfo(ExpenseBaseModel model, ExpenseVendor vendor)
{
vendor.Name = model.VendorName;
vendor.Address1 = model.Address1;
vendor.Address2 = model.Address2;
vendor.City = model.City;
vendor.PostalCode = model.PostalCode?.Replace(" ", string.Empty);
vendor.ProvinceId = model.ProvinceId;
}
Можно ли реализовать оба класса из одного интерфейса? Обратитесь к этой статье из Jon http://www.yoda.arachsys.com/csharp/parameters.html, чтобы иметь хорошее представление о передаче параметров. –
«Я был под что при передаче объектов в методы они ссылаются «Нет, это не так. Объекты вообще не передаются.Ссылки передаются по значению. См. Http://pobox.com/~skeet/csharp/parameters.html –
@SriramSakthivel, к сожалению, они не могут, это классы инфраструктуры сущности, а Address - общая таблица, которая становится свойством каждого из объектов. – Zoinky