Laden...

Forenbeiträge von Sarc Ingesamt 417 Beiträge

11.05.2011 - 14:13 Uhr

Sorry, das var-Keyword und die Intersect-Extensionmethod gibt es erst seit .NET 3.0.

11.05.2011 - 13:50 Uhr

Hallo,

wie bereits erwähnt wurde, erstmal ein sauberes Objektmodell basteln und dann kannst Du z.B. die Intersect-Methode verwenden:

class Program
{
	static void Main(string[] args)
	{
		var comp = new RangeComparer();
		var list = new List<Range>();
		list.Add(new Range(10, 20));
		list.Add(new Range(21, 30));
		
		var overlaps = list.Intersect(new Range[] { new Range(30,35) }, comp).Count() > 0;
		var overlapsNot = list.Intersect(new Range[] { new Range(31, 35) }, comp).Count() > 0;
	}
}

public class Range
{
	public Range(int start, int end)
	{
		this.Start = start;
		this.End = end;
	}

	public int Start { get; set; }
	public int End { get; set; }
}

public class RangeComparer : IEqualityComparer<Range>
{
	public bool Equals(Range x, Range y)
	{
		return x.Start <= y.End && x.End >= y.Start;
	}

	public int GetHashCode(Range obj)
	{
		return 0;
	}
}
11.05.2011 - 11:49 Uhr
var joined = string.Join(", ", Enumerable.Range(0, 10));
10.05.2011 - 11:43 Uhr

Hallo,

also bei mir matchen beide Zeichenketten korrekt.

var s1 = "Table 9.2.1/3GPP TS 24.008: Messages for mobility management";
var s2 = "Table 9.4.9/TS 24.008: AUTHENTICATION AND CIPHERING REQUEST message content";
Regex r = new Regex(@"/(?:3GPP )?TS [0-9.]+[:punct:]?");

Console.WriteLine(r.Match(s1).Success);
Console.WriteLine(r.Match(s2).Success);

Evtl. machst Du ja sonst noch was anders, als im obigen Quelltext dargestellt.

09.05.2011 - 21:54 Uhr

Hallo,

da das Debug.Assert ja aus der PDFSharp DLL stammt, musst Du natürlich auch die Release-Version von PDFSharp nehmen. Deine Exe-Datei hat damit nichts zu tun.

08.05.2011 - 21:58 Uhr

Hallo,

in dem von Dir verlinkten Thread steht ja schon, dass es aus dem Debug.Assert kommt.
Wenn Du also eine Release-Version verwendest, dann hast Du das Problem nicht mehr.

06.05.2011 - 18:36 Uhr

Was genau meinst Du hier mit "in die Meta-Daten browse"?

05.05.2011 - 15:56 Uhr

Das wär ja zu schön gewesen 😉
Bei mir hilft das leider nicht...

Hmm, ich habe einen Testuser als Administrator angelegt und ein entsprechendes Passwort vergeben, welches ich dann im Code verwendet habe (wie bei Dir im Beispiel).
Danach hat das einwandfrei geklappt (bei mir war es allerdings VS 2010, falls das eine Rolle spielt).

04.05.2011 - 16:57 Uhr

Hallo,

also ich habe es jetzt mal mit deinem ersten Beispielcode versucht und wenn ich das
WorkingDirectory nicht zuweise, dann klappt es.

04.05.2011 - 15:17 Uhr

Hallo,

das ist jetzt mal nur so dahin geraten, aber was passiert wenn Du den Prozess so startest?


Process.Start("runas", "/user:MeinUser \"C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\devenv.exe\"");

04.05.2011 - 13:30 Uhr

Aber warum? Liegt es daran, dass er IEnumberable erst beim ersten Zugriff auflöst?

weil du yield benutzt.
So wird er erst dann reinspringen, wenn das Enumerable das erste Item braucht.

04.05.2011 - 12:58 Uhr

Hallo,

was passiert wenn Du auf dem Object matches ToArray() aufrufst? 😃

04.05.2011 - 12:52 Uhr

Contains geht aber nur bei string und nicht bei Fremdschlüssel welche int sind.
Es gibt hier also kein p => p.Fk_Uhrzeit_id.Contains oder mache ich was falsch?

Hallo,

ich denke Diräkt meinte auch nicht die Contains-Methode vom Typ string, sondern die Contains-Methode einer Auflistung, (z. B. IEnumerable<int>).

Probier doch mal in deiner Query:


(new int[]{128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,100}).Contains(fk_uhrzeit_id)
03.05.2011 - 19:38 Uhr

Hallo Campy,

also wenn die Propertynamen von aussen kommen, dann ist meine dynamic-Lösung nicht das was Du brauchst.
Dann würde ich eher zu Dynamic Linq tendieren (siehe z.B. http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx)
Das ganze würde dann bei dir ungefähr so aussehen:

using System.Linq.Dynamic;

class Program
{
	[STAThread]
	static void Main(string[] args)
	{
		List<Person> list = new List<Person>();
		list.Add(new Person() { Name = "Hans", Age = 20 });
		list.Add(new Person() { Name = "Max", Age = 22 });
		list.Add(new Person() { Name = "Hans", Age = 33 });

		var filtered = list.AsQueryable().Where("Name = @0 AND Age > @1", "Hans", 30).ToList();
	}

	public class Person
	{
		public string Name { get; set; }
		public int Age { get; set; }
	}
}

Den String für die Where-Methode von Dynamic Linq musst Du dann nur noch selbst zusammenbauen (inkl. Operatoren).

03.05.2011 - 15:39 Uhr

Was mach ich mit dem ext?

Die Frage ist ja schon wesentlich genauer... 🤔

03.05.2011 - 10:01 Uhr

Hallo,

Ich möchte die Prüfung ob eine Interface valide ist generalisieren!

Eigentlich möchtest Du doch die Implementierung prüfen, denn ein Interface an sich ist ja immer "valide".
Wieso reicht also nicht ein Interface mit einer Methode bool IsValid(), in der geprüft wird, ob alle implementierten Interfaces "valide" sind?

02.05.2011 - 17:07 Uhr

Ok, jetzt verstehe ich es. Dadurch geht natürlich ziemlich viel Typsicherheit flöten.
Das wäre ja eigentlich nur interessant, wenn Interfaces nicht in Frage kommen und die Properties von verschiedenen Klassen gleich lauten und diese gefiltert werden sollen.

Naja ok, Du könntest dann natürlich auch mit dynamic arbeiten, z. B.:

class Program
{
	[STAThread]
	static void Main(string[] args)
	{
		List<Person> list = new List<Person>();
		list.Add(new Person() { Name = "Hans", Age = 20 });
		list.Add(new Person() { Name = "Max", Age = 22 });
		list.Add(new Person() { Name = "Hans", Age = 33 });

		List<Func<dynamic, bool>> filters = new List<Func<dynamic, bool>>();
		filters.Add(f => f.Name.Equals("Hans"));
		filters.Add(f => f.Age > 30);

		Func<dynamic, bool> composite = f => filters.TrueForAll(x => x(f));

		var filtered = list.Where(composite).ToList();
	}

	public class Person
	{
		public string Name { get; set; }
		public int Age { get; set; }
	}
}
02.05.2011 - 16:52 Uhr

Hallo Campy,

also ganz verstehe ich es nicht.
Es geht doch darum dass man eine Objektliste hat, z. B. List<Company> und darauf gefiltert werden soll. Dazu hätte ich dann den von mir geposteten Code hergenommen.
Und wieso müssen die Objekte eigentlich SearchableObject implementieren?
In deiner Find-Methode würde doch auch ein Object, statt SearchableObject reichen.

Oder reden wir irgendwie aneinander vorbei?

02.05.2011 - 16:35 Uhr

Hallo,

ich weiss nicht ob ich Dich richtig verstanden habe, aber reicht für dein Beispiel nicht einfach:

companies.Where( f => !f.Test && "Name2".Equals(f.Name2) );
01.05.2011 - 12:47 Uhr

Hallo Cat,

deine Variante ist problematisch, da Du den ObjectContext disposed und bei einer späteren Evaluierung (z.b. mit ToList) der Zugriff fehlschlägt (da db dann bereits disposed ist).
Siehe auch: ObjectContext instance has been disposed problem while binding

01.05.2011 - 11:42 Uhr

Du hast natürlich Recht. Ich habe es jetzt mal auf Referenztypen beschränkt.

Ausserdem habe ich noch eine dynamische Variante hinzugefügt.

01.05.2011 - 00:43 Uhr

Extension-Method zur Regex-Klasse, um anhand der Gruppennamen passende Objekte zu erzeugen

Hier erstmal das Snippet. Ein Beispiel folgt weiter unten.


public static class RegexExtensions
{
	public static IEnumerable<T> Matches<T>(this Regex regex, string input, ICustomConverter<T> converter = null) where T : class, new()
	{
		if (typeof(T) == typeof(object))
			return MatchesDynamic<T>(regex, input, converter);
		else
			return MatchesDefault<T>(regex, input, converter);
	}

	private static IEnumerable<T> MatchesDefault<T>(this Regex regex, string input, ICustomConverter<T> converter = null) where T : class, new()
	{
		var bindingFlags = BindingFlags.IgnoreCase | BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance;
		var t = typeof(T);

		foreach (Match m in regex.Matches(input).OfType<Match>().Where(f => f.Success))
		{
			T itm = new T();

			for (int i = 1; i < m.Groups.Count; ++i)
			{
				var groupName = regex.GroupNameFromNumber(i);

				if (converter == null || !converter.Convert(groupName, m.Groups[i], itm))
				{
					var pi = t.GetProperty(groupName, bindingFlags);

					if (pi != null)
						pi.SetValue(itm, Convert.ChangeType(m.Groups[i].Value, pi.PropertyType), null);
				}
			}

			yield return itm;
		}
	}

	private static IEnumerable<T> MatchesDynamic<T>(this Regex regex, string input, ICustomConverter<T> converter = null) where T : class, new()
	{
		var groupNames = regex.GetGroupNames();

		foreach (Match m in regex.Matches(input).OfType<Match>().Where(f => f.Success))
		{
			dynamic itm = new DynamicResult(m, groupNames);

			for (int i = 1; i < m.Groups.Count; ++i)
			{
				var groupName = regex.GroupNameFromNumber(i);

				if (converter != null)
					converter.Convert(groupName, m.Groups[i], itm);
			}

			yield return itm;
		}
	}

	public interface ICustomConverter<T>
	{
		// Liefert true, falls manuell konvertiert wurde, ansonsten false
		bool Convert(string groupName, Group group, T item);
	}

	private sealed class DynamicResult : DynamicObject
	{
		private Dictionary<string, string> values;

		public DynamicResult(Match match, string[] groupNames)
		{
			this.values = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);

			foreach (var grpName in groupNames)
				this.values.Add(grpName, match.Groups[grpName].Value);
		}

		public override bool TryGetMember(GetMemberBinder binder, out object result)
		{
			string grpValue = null;

			result = this.values.TryGetValue(binder.Name, out grpValue) ? grpValue : null;
			return result != null;
		}

		public override bool TrySetMember(SetMemberBinder binder, object value)
		{
			this.values[binder.Name] = value.ToString();
			return true;
		}
	}
}

Hat man beispielsweise Zeichenfolgen die die Grundlage für bestimmte Objekte darstellen, so kann man diese automatisch mappen lassen.
Das Beispiel zeigt ein Regex-Muster für Personendaten und die entsprechende Person-Klasse.
Die Namen der Regex-Gruppen müssen den Properties der Klasse entsprechen. Falls dies nicht möglich sein sollte oder man in das Mapping eingreifen möchte,
so kann ein ICustomConverter-Objekt übergeben werden.
Die Verwendung von "regexCustomConverter" zeigt dies beispielhaft.
Ausserdem gibt es noch eine dynamische Variante, indem man als generischen Parameter 'dynamic' übergibt.


static class Program
{
	static void Main(string[] args)
	{
		var regex = new Regex(@"(?<vorname>\w+)\s+(?<nachname>\w+)\s+\((?<age>\d+)\)");
		var regexCustomConverter = new Regex(@"(?<vorname>\w+)\s+(?<nachname>\w+)\s+\((?<age>\d+)\)\s+\((?<gender>[a-z])\)");

		// "Normale" Verwendung
		foreach (var p in regex.Matches<Person>("Max Mustermann (23)"))
		{
			Console.WriteLine(p.Vorname);
			Console.WriteLine(p.Nachname);
			Console.WriteLine(p.Age);
		}

		Console.WriteLine();

		// Verwendung eines CustomConverters
		foreach (var p in regexCustomConverter.Matches<Person>("Max Mustermann (23) (m)", new PersonConverter()))
		{
			Console.WriteLine(p.Vorname);
			Console.WriteLine(p.Nachname);
			Console.WriteLine(p.Age);
			Console.WriteLine(p.Gender);
		}

		Console.WriteLine();

		// Verwendung mittels dynamic
		foreach (var p in regex.Matches<dynamic>("Max Dynamic (23)"))
		{
			Console.WriteLine(p.Vorname);
			Console.WriteLine(p.Nachname);
			Console.WriteLine(p.Age);
		}

		Console.WriteLine();

		// Verwendung mittels dynamic (und Converter)
		foreach (var p in regexCustomConverter.Matches<dynamic>("Max Dynamic (23) (f)", new DynamicConverter()))
		{
			Console.WriteLine(p.Vorname);
			Console.WriteLine(p.Nachname);
			Console.WriteLine(p.Age);
			Console.WriteLine(p.Gender);
		}

		Console.ReadLine();
	}

	public class PersonConverter : RegexExtensions.ICustomConverter<Person>
	{
		public bool Convert(string groupName, Group group, Person item)
		{
			if (string.Equals("gender", groupName))
			{
				item.Gender = string.Equals(group.Value, "m") ? Gender.Male : Gender.Female;
				return true;
			}

			return false;
		}
	}

	public class DynamicConverter : RegexExtensions.ICustomConverter<object>
	{
		public bool Convert(string groupName, Group group, object item)
		{
			dynamic d = item;

			if (string.Equals("gender", groupName))
			{
				d.Gender = string.Equals(group.Value, "m") ? Gender.Male : Gender.Female;
				return true;
			}

			return false;
		}
	}

}

public class Person
{
	public string Vorname { get; set; }
	public string Nachname { get; set; }
	public int Age { get; set; }
	public Gender Gender { get; set; }
}

public enum Gender
{
	Male,
	Female
}

Viel Spass damit!

Schlagwörter: Regex, Mapper, Mapping

28.04.2011 - 14:16 Uhr

Hallo dN!3L,

das war mir schon klar (bis auf FieldInfo => Eigenschaften/Felder 😉).
Ich wollte eigentlich darauf hinaus, warum die Aussage von michlG "korrigiert" wurde.
Ein PropertyInfo wird ja nicht von einem Property geholt, sondern vom jeweiligen Typen.
Der Typ wird aus der Variable "object o" (Methodenparameter) geholt (o.GetType()).

Und wenn dann müsste es höchstens "FieldInfo=Field" heissen, denn für Nicht-Member-Variablen gibt es kein FieldInfo.

27.04.2011 - 20:19 Uhr

Hallo,

ja das geht. Schau dir hierzu auch mal in Regex die Groups an.
Kleines Beispiel (ungetestet):


MatchCollection mc = Regex.Matches(input, @"\[setid\:(?<x>\d+)=(?<y>\d+)\]");

foreach(var m in mc) {
m.Groups[0] // komplett
m.Groups["x"] // wert von x
m.Groups["y"] // wert von y
}

26.04.2011 - 17:48 Uhr

Ist es denn möglich den Rückgabewert wieder in ein IEnumerable<string> herein zu schreiben?

Dann mach doch gleich einfach:

fruits.Where(fruit => fruit.Length < 6).Take(1).ToList();
22.04.2011 - 23:49 Uhr

Also bei itextsharp habe ich nirgends eine Möglichkeit gefunden

Wirklich gesucht hast Du nicht oder? Wenn ich nach "itextsharp image" suche, liefert gleich der erste Treffer ein passendes Ergebnis. (iTextSharp - Working with images)

22.04.2011 - 18:07 Uhr

Da Du ja quasi eine Client-seitige Methode in dem Title-Property verwendest, müsstest Du ja eh erst alle Zeilen lesen, damit Du entscheiden kannst ob gefiltert werden muss. Du könntest Dir natürlich eine C# Methode erstellen, welche vom SQL Server verwendet werden kann (ein Beispiel ist hier: http://www.setfocus.com/technicalarticles/articles/clrfunctionforsqlserver.aspx).
Aber damit bindest Du Dich fest an den SQL Server. Außerdem weiss ich nicht, wie Du das dann in deiner ApplyFilter Methode verwenden kannst.

Ansonsten müsstest Du die NotMapped-Properties separat behandeln und später mit den anderen Ergebnissen mergen.
Die NotMapped-Properties kannst Du in deiner ApplyFilter wie folgt abfangen:

public static IQueryable<T> ApplyFilter<T>(IQueryable<T> source, LambdaExpression columnExpression, String value)
{
	var mi = (MemberInfo)((dynamic)columnExpression.Body).Member;
	var notMappedAttribute = mi.GetCustomAttributes(typeof(NotMappedAttribute), true).FirstOrDefault();

	if (notMappedAttribute != null)
		return source;
	
	...
}
22.04.2011 - 11:29 Uhr

Aha, jetzt kommen wir der Sache schon näher 😃
Wie wärs mit: Displaying Data in a Chart with ASP.NET Web Pages (Razor)

22.04.2011 - 11:14 Uhr

Das Konstrukt ergibt sowas in der Art:

model => (model => model.Property).Contains("something")  

was natürlich nicht kompilierbar ist.

Hast Du das denn getestet oder ist das nur eine Vermutung?
Ich habe das ganze mal schnell runtergeschrieben und bei mir funktioniert das (natürlich erstmal ohne EF):

class Program
{
	[STAThread]
	static void Main(string[] args)
	{
		MethodInfo getDataMethod = typeof(GridModel).GetMethod("GetData");
		object result = getDataMethod.Invoke(null, null);
		Type dataSource = ((IQueryable)result).ElementType;

		MethodInfo applyFilterMethod = typeof(Program).GetMethod("ApplyFilter");
		applyFilterMethod = applyFilterMethod.MakeGenericMethod(new System.Type[] { ((IQueryable)result).ElementType });

		Expression<Func<Series, string>> exp1 = f => f.Title;
		result = applyFilterMethod.Invoke(null, new object[] { result, exp1, "test" });
	}

	public static IQueryable<T> ApplyFilter<T>(IQueryable<T> source, LambdaExpression columnExpression, String value)
	{
		MethodCallExpression methodCall = Expression.Call(columnExpression.Body, "Contains", null, Expression.Constant(value, typeof(String)));
		var param = columnExpression.Parameters.First();
		LambdaExpression lamda = Expression.Lambda(methodCall, param);
		Expression<Func<T, Boolean>> expression = Expression.Lambda<Func<T, Boolean>>(methodCall, false, param);

		return source.Where(expression);
	}
}

public class Series
{
	public string Title { get; set; }
	public DateTime Updated { get; set; }
}

public class GridModel
{
	public static IQueryable<Series> GetData()
	{
		List<Series> list = new List<Series>();
		list.Add(new Series() { Title = "test", Updated = DateTime.Now });

		return list.AsQueryable();
	}
}
22.04.2011 - 11:06 Uhr

Hallo,

Du solltest deine Frage schon ausführlicher gestalten. Ich verstehe nicht so recht was Du genau willst.
Razor ist ja nur die ViewEngine. Für statistische Auswertungen brauchst Du sicherlich eine Datenbank. JavaScript hilft Dir da erstmal nicht weiter.

22.04.2011 - 10:29 Uhr

Hi,

ich denke Du musst einfach den Parameter aus der Expression wiederverwenden.
Ändere mal deine Methode ApplyFilter wie folgt ab:

public IQueryable<T> ApplyFilter<T>(IQueryable<T> source, LambdaExpression columnExpression, String value)
{
	MethodInfo contains = typeof(String).GetMethod("Contains");
	ParameterExpression param = columnExpression.Parameters.First();
	MethodCallExpression methodCall = Expression.Call(columnExpression.Body, contains, Expression.Constant(value, typeof(String)));

	Expression<Func<T, Boolean>> expression = Expression.Lambda<Func<T, Boolean>>(methodCall, false, param);

	return source.Where(expression);
}

Und beim Aufruf übergibst Du dann einfach nur die Expression (nicht den Body):

result = ApplyFilterMethod.Invoke(this, new Object[] { result, loopColumn.Expression, Request.Form[loopColumn.ColumnName] });

Hoffe das klappt. Kann es hier leider schlecht testen.

21.04.2011 - 09:06 Uhr

Hi,

kannst Du vielleicht den zusammenhängenden Code posten?
Irgendwie fehlt doch da der Aufruf der ApplyFilter-Methode, oder?

16.04.2011 - 21:15 Uhr

Hallo,

es kommt natürlich schon auf den konkreten Anwendungsfall an. Grundsätzlich finde ich so einen statischen Ansatz (oder alternativ das Singleton-Pattern) eher unsauber.
Als Alternative kannst Du einen Dependency Injection Container (DI-Container) verwenden. Der Container übernimmt dann die Instanzierung der jeweiligen Klassen und versorgt die abhängigen Objekte mit dieser Instanz. Es ist allerdings eine andere Art der Entwicklung und für deinen Anwendungsfall evtl. zu komplex.
Aber generell lohnt es sich schon sich mit dem Einsatz von DI-Containern zu befassen.

07.04.2011 - 12:47 Uhr

Hi,

ich bin mir nicht sicher ob ich das Problem richtig verstanden habe, aber sollte das nicht ausreichen?

int[] ids = new int[] { 36 };
Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(34, "1");
dict.Add(35, "2");
dict.Add(36, "3");

var result = dict.Select(f => new KeyValuePair<int, int>(f.Key, ids.Count(x => f.Key == x)));
29.03.2011 - 21:18 Uhr

Wie sieht denn der momentane Code aus?

Edit: Oder versuch mal die MailMessage zu disposen (siehe auch http://stackoverflow.com/questions/1296380/smtp-send-is-locking-up-my-files-c)

29.03.2011 - 21:05 Uhr

Du rufst aber schon die Dispose-Methode vom SmtpClient-Objekt auf, oder?

25.03.2011 - 21:11 Uhr

Wie gesagt: Ich hab nix gefunden, wie man einen User für die DB anlegt. X(

Hmm, nach was hast du denn gesucht? ("create user sql server" gibt einiges zurück)

Über das Management Studio lässt sich komfortabel ein User erzeugen oder eben
manuell mit sql statements wie hier:
http://www.herongyang.com/JDBC/SQL-Server-PreparedStatement-Create-User.html

22.03.2011 - 09:34 Uhr

Wenn ich das richtig verstehe, willst du die Validierung der DataAnnotation manuell anstossen?!
Falls ja, dann ist diese Klasse etwas für dich:

System.ComponentModel.DataAnnotations.Validator
21.03.2011 - 17:48 Uhr

Wie wärs mit Resgen? Resource File Generator (Resgen.exe)

Edit: Evtl. ist der Zeta Resource Editor auch was für dich (bzw. den Übersetzer): http://www.zeta-resource-editor.com/download.html

17.03.2011 - 16:30 Uhr

Öhm, wieso nimmst Du nicht anstelle eines SVN-Checkout Commands, einfach einen SVN-Export Command?
Dann bekommst Du die .svn Ordner garnicht erst.

16.03.2011 - 16:36 Uhr

Sehe ich das richtig, dass MonoDroid nichts kostet? Ich meinte hier mal gelesen zu haben dass es was kostet.
BTW: Wenn ich damit entwickeln will (privat) brauche ich ein VS2010 Prof/Ultimate?
Habe ich nur auf der Arbeit, habe auch kein MSDNAA Account oder sonstiges, gibt es da keine andere Loesung? http://mono-android.net/FAQ

14.03.2011 - 23:21 Uhr

oder doch mit ner extension. und dann aber ganz dreißt einen Buchstabendreher reinbauen. aus Length wird Lentgh 😉 Und schon kann mans mit ner Extensionmethode machen

hmm, die Extensionmethod die ich oben gepostet habe funktioniert doch, auch mit dem Methodennamen "Length".
zumindest kompiliert das bei mir...

14.03.2011 - 23:14 Uhr

hmm, vielleicht solltest Du denn obigen Code mal kompilieren... ^^

14.03.2011 - 22:50 Uhr

Hast du schonmal die Vorschläge zum Encoding von dieser Seite getestet?
http://hellowebapps.com/products/imapx/

14.03.2011 - 22:26 Uhr

Wie Floste vorgeschlagen hat einfach den Namen mit + an das string.Empty anfügen.
Alternativ:

if (args.Length() == 0 || args[0] == string.Empty) {
    Console.WriteLine("Bitte geben Sie den Namen des Angestellten an, den Sie feuern möchten!");
    return;
}
public static class X
{
    public static int Length(this string[] s)
    {
        return s.Length == 0 || s[0].Equals("MyUsername") ? 0 : 1;
    }
}
13.03.2011 - 16:04 Uhr

Ich kenn zwar die meisten Klassen aus dem Code nicht, aber wäre es nicht besser
den Response-Stream an den Mp3FileReader zu übergeben, anstelle des MemoryStreams? (ich nehme mal an der Mp3FileReader liest aus dem übergebenen Stream)

07.03.2011 - 16:42 Uhr
double d = 120 / 100; // = 1.0
double d2 = (double)120 / 100; // = 1.2
23.02.2011 - 20:03 Uhr

Hi,

du mischt da zwei Dinge die so nicht zusammen passen: WebForms und MVC
Das GridView Control das du verwendest, funktioniert daher nicht ohne weiteres in einer MVC-Anwendung. Siehe auch: http://stackoverflow.com/questions/2803525/asp-net-gridview-mvc
Es gibt diverse andere Grid-Controls für MVC: http://stackoverflow.com/questions/177275/grid-controls-for-asp-net-mvc

23.02.2011 - 18:22 Uhr

Hi,

du darfst keinen string zurückgegeben, sondern ein MvcHtmlString-Objekt, also:


public static MvcHtmlString Image(this HtmlHelper helper, string source, string alternative)
{
    return new MvcHtmlString(String.Format("<img src=\"{0}\" alt=\"{1}\" />", source, alternative));
}