我想分離我的邏輯以獲得更好的可讀性和可重用性。我正在嘗試構建更好的應用程序。在Linq/mvc4中建立和分離查詢邏輯
我會告訴你一個工作控制器和模型的樣本,並顯示我想去的地方。
這是我在轉換之前。
private IOAuthCredentials credentials = new SessionStateCredentials();
private MvcAuthorizer auth;
private TwitterContext twitterCtx;
public ActionResult Twitter()
{
if (credentials.ConsumerKey == null || credentials.ConsumerSecret == null)
{
credentials.ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"];
credentials.ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"];
credentials.OAuthToken = ConfigurationManager.AppSettings["twitterOAuthToken"];
credentials.AccessToken = ConfigurationManager.AppSettings["twitterAccessToken"];
}
auth = new MvcAuthorizer
{
Credentials = credentials
};
auth.CompleteAuthorization(Request.Url);
if (!auth.IsAuthorized)
{
Uri specialUri = new Uri(Request.Url.ToString());
return auth.BeginAuthorization(specialUri);
}
twitterCtx = new TwitterContext(auth);
List<TweetViewModel> friendTweets = (from tweet in twitterCtx.Status
where tweet.Type == StatusType.Friends
select new TweetViewModel
{
ImageUrl = tweet.User.ProfileImageUrl,
ScreenName = tweet.User.Identifier.ScreenName,
Tweet = tweet.Text
})
.ToList();
return View(friendTweets);
這裏是
public class TweetViewModel
{
/// <summary>
/// User's avatar
/// </summary>
public string ImageUrl { get; set; }
/// <summary>
/// User's Twitter name
/// </summary>
public string ScreenName { get; set; }
/// <summary>
/// Text containing user's tweet
/// </summary>
public string Tweet { get; set; }
}
我做了一個DataContext文件夾,並把數據類中
這裏是類
public class TwitterFriend
{
private MvcAuthorizer auth;
public List<TweetViewModel> GetFriends()
{
// private MvcAuthorizer auth;
using (var twitterCtx = new TwitterContext(auth))
{
var friendTweets = (from tweet in twitterCtx.Status
where tweet.Type == StatusType.Friends
select new TweetViewModel
{
ImageUrl = tweet.User.ProfileImageUrl,
ScreenName = tweet.User.Identifier.ScreenName,
Tweet = tweet.Text
})
.ToList();
return friendTweets;
}
}
然後我試圖做一個列表中的類方法來實例化列表(不起作用)
public List<TweetViewModel> GetFriendTweets()
{
List<TweetViewModel> friends = (List<TweetViewModel>)(new TwitterFriend());
// friends.ToList();
return friends.ToList();
}
}
然後我會把從方法
Getfriends()拉列表:
很抱歉,如果我粘貼的東西很多,我試圖設計並作出適當的應用,在那裏我沒有重新執行我的邏輯,因爲我知道我可以擊中這些陷阱。
我可以得到一些解決此問題的幫助。我不認爲這是一個複雜的情況。
如果他們需要幫助,修改後的答案在下面!謝謝!!
就在數據類
public List<TweetViewModel> GetFriends()
// public List<Status> GetFriends()
{
using (var twitterCtx = new TwitterContext(_auth))
{
// List<Type>
List<Status> friendTweets = (from tweet in twitterCtx.Status
where tweet.Type == StatusType.Friends
select tweet).ToList();
List<TweetViewModel> friends = new List<TweetViewModel>();
foreach (Status item in friendTweets)
{
TweetViewModel search2 = new TweetViewModel();
{
search2.ImageUrl = item.User.ProfileImageUrl;
search2.ScreenName = item.User.Identifier.ScreenName;
search2.Tweet = item.Text;
}
friends.Add(search2);
}
return friends.ToList();
在初始化你的'MvcAuthorizer'對象中的一部分。在「TwitterFriend」類中,它不是。 – veblock 2012-03-22 03:22:20