Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace testcase
- {
- public class Program
- {
- static void Main(string[] args)
- {
- var vote1 = new Vote() { ItemID = 1 };
- List<Vote> votes = new List<Vote>();
- votes.Add(vote1);
- List<string> strings = new List<string>();
- strings.Add("test");
- List<Post> posts = Post.SortedCollection<Post>(strings, ListSortType.Hot, votes);
- }
- }
- public interface IVotable
- {
- double HotScore { get; set; }
- double VoteTotal { get; set; }
- DateTime CreatedDate { get; set; }
- }
- public class SCO : IVotable
- {
- public double HotScore { get; set; }
- public double VoteTotal { get; set; }
- public DateTime CreatedDate { get; set; }
- public SCO(string item, List<Vote> votes)
- {
- VoteTotal = 10;
- HotScore = 10;
- CreatedDate = DateTime.Now;
- }
- public static List<T> SortedCollection<T>(List<string> items, ListSortType sortType, List<Vote> votes) where T : IVotable
- {
- var returnlist = new List<T>();
- Type genericType = typeof(T);
- var functionCreator = FastActivator.GenerateFunc<Func<string, List<Vote>, T>>();
- for (int i = 0; i < items.Count; i++) { returnlist.Add(functionCreator(items[i], votes)); }
- switch (sortType)
- {
- case ListSortType.Hot:
- returnlist.Sort((p1, p2) => p2.HotScore.CompareTo(p1.HotScore));
- break;
- case ListSortType.Top:
- returnlist.Sort((p1, p2) => p2.VoteTotal.CompareTo(p1.VoteTotal));
- break;
- case ListSortType.Recent:
- returnlist.Sort((p1, p2) => p2.CreatedDate.CompareTo(p1.CreatedDate));
- break;
- }
- return returnlist;
- }
- }
- public class Vote
- {
- public double ItemID { get; set; }
- }
- public class VoteMeta
- {
- public double UpVotes { get; set; }
- public double DownVotes { get; set; }
- public string CurrentUserVoteClass { get; set; }
- }
- public enum ListSortType { Hot, Top, Recent };
- public class Post : SCO
- {
- public string Summary { get; set; }
- public Uri Link { get; set; }
- public Post(string item, List<Vote> votes)
- : base(item, votes)
- {
- Summary = "Summary";
- Link = new UriBuilder("http://www.google.com").Uri;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement