Säg att jag har klassen Invoice Varför inte retunera värdet? Mmm exemplet var kanske lite dåligt, Product kommer via ett event alltså Om du i stället för att byta ut hela referensen som du gjort i första exemplet Japp det är en sån lösning jag har gjort och det verkar vara enda alternativet. <b>Nån som testat att implementera en generell lösning för detta med reflektion?</b>Hur byta ut objekt ett objekt som ligger i en lista via referensen
class Invoice
{
private List<Product> productList;
}
class Program
{
public Program()
{
Invoice inv = new Invoice();
inv.Add(new Product());
inv.Add(new Product());
Product product = inv[0];
DoSomething(ref product);
}
public void DoSomething(ref Product product)
{
Product newProduct = new Product();
product = newProduct;
}
}
Detta leder inte till att produkten som ligger på plats 0 i Invoice ändras till newProduct... Hur kan man lösa detta. Vill alltså att produkten i Invoice:ens lista ska peka på newProduct iställer för den product jag skickade in.Sv: Hur byta ut objekt ett objekt som ligger i en lista via referensen
class Invoice
{
private List<Product> productList;
}
class Program
{
public Program()
{
Invoice inv = new Invoice();
inv.Add(new Product());
inv.Add(new Product());
Product product = inv[0];
inv[0] = DoSomething(product);
}
public Product DoSomething(Product product)
{
Product newProduct = new Product();
return newProduct;
}
}
Sv:Hur byta ut objekt ett objekt som ligger i en lista via referensen
public void OnSomething(object sender, EventArgs<Product> product)
{
DoSomething(ref product); // Här byts product ut mot objektet från servicen
}
jag har alltså inte tillgång till listan utan bara en referens till ett objekt i listan... Sv: Hur byta ut objekt ett objekt som ligger i en lista via referensen
public void DoSomething(ref Product product)
{
Product newProduct = new Product();
product = newProduct;
}
byter ut de enskilda properties borde det funka (såvida propertyna tillåter sättning och Product inte får nån "identitetskris")
public void DoSomething(ref Product product)
{
Product newProduct = new Product();
// gör stuff
product.Foo = newProduct.Foo;
product.Bar = newProduct.Bar;
//osv
}
(urk vilken svengelska)
Sv:Hur byta ut objekt ett objekt som ligger i en lista via referensen
Nån som testat att implementera en generell lösning för detta med reflektion?
Det borde ju gå.Sv: Hur byta ut objekt ett objekt som ligger i en lista via referensen
Tja, inte exakt det där har jag gjort, men liknande grejer har jag nog pysslat ihop, och vill man ha mer prestanda så tittar man på DynamicMethod :)