@herbie
Danke für die schnelle Antwort, wie würde man es machen, wenn die Eingangsparameter nicht modifiziert werden dürften??
danke
rizi
Hi, ich stand schon öfters vor folgendem Problem:
public class Data{
public double Latitude{get;set;}
public double Longitude{get;set;}
public string Text{get;set;}
}
pubilc class BusinessLogic{
public IEnumerable<Data> GetDataFromDAL(int id){
IEnumerable<Data> data = dal.GetData(id);
ModifiyData(data);
}
public void ModifyData(IEnumerable<Data> data){
//zb.
foreach(var currData in data){
currData.Longitude += 0.001;
}
}
}
So wie ich es im obigen Code dargestellt habe sollte es ja nicht sein, richtig??
Eingangsparameter sollten soweit ich weiß nicht verändert werden, wie wäre die richtige Herangehensweise für so etwas?
Folgende Idee:
Die Mehtode ModifyData gibt ebenfalls IEnumerable<Data> zurück, erzeugt also innerhalb der Methode eine neue List, die Frage die sich mir nun stellt: ich müsste eigentlich auch neue Data Objekte erstellen(Stichwort IClonable), die Werte von currData übernehmen u. zb. 0.0001 dazu addieren. (neue Objekte deshalb erstellen, denn es handelt sich ja um Instanzen innerhalb der Liste, daher würde es meiner Meinung nach nicht ausreichen eine neue Liste zu erstellen u. die modifizierten Daten-Objekte zu adden.
Wie seht ihr das, gibt es eine Pattern das dieses Problem löst??
Danke & Lg
rizi
Danke für die Info & danke fürs Umbenennen des Themas.
Lg
rizi
@winSharp93
minValue und maxValue sind ebenfalls int-werte:
zb:
ValidateFieldIsInRange(5, 1, 9);
ohne Nullable funktioniert es, allerdings wird Nullable hier benötigt, ist allerdings anhand des obrigen Beispiels nicht zu erkennen!
Meine Frage ist eben warum dieses Nullable diesen Einfluss hat.
bzw. wenn man null für value verwendet kann man sich das <int> ebenfalls sparen:
Bsp.:
ValidateFieldIsInRange(null, 1, 9);
Bin für weitere Tipps dankbar.
lg
rizi
public void ValidateFieldIsInRange<T>(T? value, T minValue, T maxValue) where T : struct, IComparable<T>
{
if(minValue.CompareTo(value.Value)>0 || maxValue.CompareTo(value.Value)<0)
//do something
}
Folgender Aufruf der Methode funktioniert nicht:
ValidateFieldIsInRange(5, minValue, maxValue);
Folgender Aufruf der Methode funktioniert:
ValidateFieldIsInRange<int>(5, minValue, maxValue);
Was ich nicht verstehe ist,warum explizit <int> angeben werden muss!
Kann mir jemand auf die Sprünge helfen?
Danke schön
rizi
@schaedld
Wow, vielen Dank für die Mühe, dann werde ich mir mal dieses Rating Control ansehen.
danke schön
rizi
Nein, das Ergebnis kommt bereits aus der DB, ich will es nur noch darstellen, allerdings kann ich mit DataBinder.Eval() nichts in eine Variable speichern, die sich im CodeBehind File befindet, diese brauche ich aber damit ich mit
if(i≤ RatingResult)....
festlegen kann wieviele Sterne angezeigt werden.
Auf dieses Verhalten kann ich keinen Einfluss nehmen,da das jQuery Plugin es so vorsieht.
lg
rizi
hi schaedld
es geht um diesen code:
<input name="<%=uniqueName %>" type="radio" class="star" value="<%=i%>" disabled="disabled"
<% if(i <= RatingResult){ %>
checked="checked" <%} %> />
<%} %>
dabei handelt es sich um ein jQuery Rating Plugin (natürlich müssen noch ein paar javascript+bilder eingebunden werden)
Und mit der Variable RatingResult wird angegeben wieviele Sterne beim RatingControl angezeigt werden.
Lg
rizi
Hi, schön langsam verzweifle ich, ich nutze die ASP.NET DataList, dies sieht folgendermaßen aus:
<asp:DataList ID="dlBlogEntries" runat="server" >
<ItemTemplate>
<fieldset class="fieldsetCreateWidth">
<%for (int i = 1; i <= 5; i++){ %>
<%# RatingResult = (int)DataBinder.Eval(Container.DataItem, "RatingResult") %>
<input name="<%=uniqueName %>" type="radio" class="star" value="<%=i%>" disabled="disabled"
<% if(i <= RatingResult){ %>
checked="checked" <%} %> />
<%} %>
</fieldset>
</ItemTemplate>
Was ich machen möchte ist, das Ergebnis des Ausdrucks in eine Variable speichern die sich im CodeBehind befindet, ich versuche dass bis jetzt so:
<%# RatingResult = (int)DataBinder.Eval(Container.DataItem, "RatingResult") %>
Allerdings wird das Ergebnis immer in den HTML Code geschrieben anstatt in die Variable gespeichert.
Kann mir jemand sagen wie ich das bewerkstelligen kann, möglicherweise ist ja DataBinder.Eval() einfach der falsche Ansatz.
Danke vielmals
Lg
rizi