わかりやすさと再利用性のためにロジックを分離しようとしています。私はより良いアプリケーションを構築しようとしています。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()置く:私はものの多くを貼り付けた場合、私は持っていけない、適切なアプリを設計し、作るしようとしています
申し訳ありませんが私はこれらの落とし穴を打つことができることを知っていたので、私の論理を全面的にやり直す。
これを解決する助けを得ることができますか?私はこれが複雑なシナリオだとは思わない。
ヘルプが必要な場合は、他の人の回答を修正しました。ありがとうございました!!あなたがMVCAuthorizerを注入どこ
ただ、データクラス
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();
を助け
}
希望。 'TwitterFriend'クラスではそうではありません。 – veblock