我本質上是試圖從對象列表中拉回自定義類而不暴露我的列表。下面是我如何運作,但我不認爲這是最優雅的方式。另外 - 如何在不實例化新類的情況下調用此調用的實例?我想盡一切努力。C#最好的方式來公開一個方法,同時保持一個私人列表
我希望能夠調用我的要求在一行
Library.ConnectionController cc = new Library.ConnectionController();
cc = cc.Request("z");
這裏是我的課
我本質上是試圖從對象列表中拉回自定義類而不暴露我的列表。下面是我如何運作,但我不認爲這是最優雅的方式。另外 - 如何在不實例化新類的情況下調用此調用的實例?我想盡一切努力。C#最好的方式來公開一個方法,同時保持一個私人列表
我希望能夠調用我的要求在一行
Library.ConnectionController cc = new Library.ConnectionController();
cc = cc.Request("z");
這裏是我的課
這是寫在一個簡單的方式
一個版本的代碼namespace Library
{
public class ConnectionController
{
private static readonly List<ConnectionController> CcList = new List<ConnectionController>
{
new ConnectionController
{
UserName = "x",
Password = "y",
ProjectName = "r",
Domain = "z",
SQLDatabase = "a",
SQLServer = "b"
}
};
public string UserName { get; set; }
public string Password { get; set; }
public string ProjectName { get; set; }
public string Domain { get; set; }
public string SQLServer { get; set; }
public string SQLDatabase { get; set; }
public static ConnectionController Request(string domain)
{
return CcList.Where(m => m.Domain.ToUpper() == domain.ToUpper())
.Select(m => new ConnectionController
{
UserName = m.UserName,
Password = m.Password,
ProjectName = m.ProjectName,
Domain = m.Domain,
SQLServer = m.SQLServer,
SQLDatabase = m.SQLDatabase
}).ToList()[0];
}
}
}
,那麼你可以
var requesteed = ConnectionController.Request("x");
我完全不明白你想要什麼。但這裏是使用一些基本思想的正確版本:
static
方法檢索controller
。由於找不到請求的名稱controller
,我們需要調用一些外部請求函數。所以最好的辦法就是使的功能returned type
。list
,所以它只會被創建(或評估)一次。FirstOrDefault()
LINQ
擴展方法,因爲可能有空結果。下面是代碼:
public class Library
{
public class ConnectionController
{
public string UserName { get; set; }
public string Password { get; set; }
public string ProjectName { get; set; }
public string Domain { get; set; }
public string SQLServer { get; set; }
public string SQLDatabase { get; set; }
public static ConnectionController Request(string Domain)
{
return InternalLibrary.ccList.
Where(m => m.Domain.Equals(Domain,
StringComparison.CurrentCultureIgnoreCase)).
FirstOrDefault();
}
}
private class InternalLibrary
{
public static readonly List<ConnectionController> ccList =
new List<ConnectionController>
{
new ConnectionController()
{
UserName = "x",
Password="y",
ProjectName="r",
Domain = "z",
SQLDatabase = "a",
SQLServer = "b"
}
};
}
}
而且你可以使用此類似這樣(注意controller
可能是null
)
var controller = Library.ConnectionController.Request("z");
附:我沒有刪除InternalLibrary
類,假設這不僅僅是一個硬編碼列表,而是一些分離的邏輯的複雜類。