Multiple Belastede Skjøtemetoder i C #

stemmer
1

Å ha et problem å sette data med en overbelastet utvidelse metode -

Jeg har to skjøtemetoder:

public static void Fill(this SearchRequest request, ISearchViewModel vm)
{
    request.blabla = vm.blabla;
}

public static void Fill(this IEnumerable<IViewModel> response, SearchResponse searchResponse)
{
 // a list is created here and assigned to response
  List<IViewModel> someResults = new List<IViewModel>();
 // do stuff with search response and someResults
 response = someResults;
}

I første samtalen:

 SearchRequest request = new SearchRequest ();
 request.Fill(criteria);

og request.blabla blir satt som forventet. Så langt så bra.

Jeg så prøve:

ResultViewModel result = new ResultViewModel ();
result.searchResult.Fill(searchResponse);

.searchResult er en IEnumerable av IViewModel, men etter streken kalles, er null den result.searchResult. Fyll forlengelsen metoden er definitivt å bli kalt, og er definitivt sette data.

Noen ideer om hva som kan gå galt vil bli verdsatt.

(Jeg bruker VS 2015, og dette er en vNext prosjekt - og nei de er ikke ekte variable / klasse navn)

Publisert på 25/11/2014 klokken 20:18
kilden bruker
På andre språk...                            


3 svar

stemmer
3

responseer den verdi av result.searchResult, det er ikke et alias for den variable . Angi en verdi for å responseikke mutere result.searchResult. Det er ikke mulig å skrive en skjøtemetode som passerer sin implisitt parameter ved referanse i stedet for av verdi.

Svarte 25/11/2014 kl. 20:31
kilden bruker

stemmer
0

Du kan bruke denne koden i stedet for koden din:

void Main()
{
    var f=new Foo();
    f.FillMyList();
}

public class Foo
{
    public List<string> MyList { get; set; }
}

public static class extensions
{
    public static void FillMyList(this Foo f)
    {
        f.MyList=new List<string>();
        f.MyList.Add("some item");
    }
}
Svarte 25/11/2014 kl. 20:38
kilden bruker

stemmer
0

IEnumerables er uforanderlige. Kanskje du kan endre typen til noe som er foranderlig som en liste?

Svarte 25/11/2014 kl. 20:38
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more