我有很多項目的解決方案:
Yupii.Games -> Class Library where settings, utilities are shared with projects Yupii.Games.Web -> Web app Yupii.Games.Api -> Web api
Gloabal JSON文件有許多項目共享在一個解決方案(asp.net 2.0核心)
我使用的MongoDB數據庫和我有很多收藏,但我想尊重集合名稱約定例如:
怪物(是一個實體)到怪物集合名稱。
我有一個名爲GlobalSettings.json在Yupii.Games JSON文件:
"MongoDBCollections": {
"Collections": [
{ "Monster": "monsters" },
{ "User": "users" }
...
]}
在Yupii.Games.Api我有類似:
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MongoDbSettings>(options =>
{
options.ConnectionString = Configuration.GetSection("MongoConnection:ConnectionString").Value;
options.Database = Configuration.GetSection("MongoConnection:Database").Value;
)};
}
我怎樣才能達到GlobalSettings上傳.json - > 「MongoDBCollections」 - >集合[]爲具有也爲服務:
services.Configure<GlobalSettings>(options =>
{
options.Collections = CollectionsConfiguration.GetSection("MongoDBItems:Collections").Get<Dictionary<string, string>>();
});
然後循環拿到聯想集合名稱:
var collectionName = typeof(T).Name;
foreach (var collection in CollectionList)
{
if (collectionName == collection.Key)
return Database.GetCollection<T>(collection.Value);
}
return Database.GetCollection<T>(collectionName);
我希望能夠做同樣的Yupii.Games.Web
其實,我能盡到以不同的方式工作得很好,但代碼和結構是可怕的。如果任何身體可以顯示更好,更乾淨的方式PLZ。
我使用Visual Studio 2017年asp.net 2.0核心
我希望一切都清楚了...
UPDATE
在Yupii.Games.Web方法之一撥打電話是這樣的:
HttpResponseMessage response = client.GetAsync(RESTVersion + GetCollectionName() + e).Result;
和GetCollectionName():
public string GetCollectionName()
{
string collectionName = typeof(T).Name;
... // get the collection name by associating the typeof(T)
return name;
}
只是好奇 - 爲什麼使用GlobalSetting.json而不是應用程序正在讀取的'appSetting.json'?另外我假設網絡將是你的啓動項目 - 爲什麼不把文件放在那裏作爲你的'startup.cs'駐留在網頁或api – Jaya
因此,如果我把MongoDBCollections放在Yupii.Games.Api appSettings.json中,我怎樣才能達到它Yupii.Games.Web?我不想在appSettings.json(Web和Api)中重複使用MongoDBCollection json元素。我也有Xamarin使用HttpClient進行調用。 – yupii7
哪個項目完全需要它?我認爲這是網絡API的權利? - 然後將其放置在該項目中,並在startup.cs中讀取文件並循環播放集合,我假設您的網絡使用api – Jaya