为什么C#中不允许使用静态索引器?我认为没有理由不允许他们这样做,而且他们可能非常有用.
例如:
public static class ConfigurationManager
{
public object this[string name]
{
get => ConfigurationManager.getProperty(name);
set => ConfigurationManager.editProperty(name, value);
}
/// <summary>
/// This will write the value to the property. Will overwrite if the property is already there
/// </summary>
/// <param name="name">Name of the property</param>
/// <param name="value">Value to be wrote (calls ToString)</param>
public static void editProperty(string name, object value)
{
var ds = new DataSet();
var configFile = new FileStream("./config.xml", FileMode.OpenOrCreate);
ds.ReadXml(configFile);
if (ds.Tables["config"] == null)
ds.Tables.Add("config"); …Run Code Online (Sandbox Code Playgroud) 我想创建一个与ASP.Net Session类似的对象.
假设我将此对象称为mySession,我想在你做的时候这样做
mySession["Username"] = "Gav"
Run Code Online (Sandbox Code Playgroud)
如果它不存在,它将把它添加到数据库表中,如果存在则更新它.我可以编写一个方法来执行此操作但不知道如何在使用索引器语法([])时触发它.我从来没有用索引器构建一个做这样的事情的对象.
在任何人说任何事情之前,我知道ASP.Net会话可以保存到数据库,但在这种情况下,我需要一个稍微简单的自定义解决方案.
以这种方式使用索引器的任何指针或示例都会很棒.
谢谢
早上.
问题:
我有一个名为Reports的类.两个构造函数.一个不允许参数,另一个是字符串数组.字符串数组应该是他们想要显示的报告.我想做的是以下内容:
string strSQL = this.Queries[strReportName];
Run Code Online (Sandbox Code Playgroud)
我觉得这是可能的,因为在我正在使用的dataGridView中,我通过以下方式得到列索引:
int nColumnIndex = dgvParts.Columns[strColumnName].Index;
Run Code Online (Sandbox Code Playgroud)
这两个示例都使用字符串来确定它们检索的数组中的值,但我不确定如何执行此操作.谁能给我一些帮助?任何和所有的帮助表示赞赏.
对于编辑和mods:是的,报告部分与我关于动态加载DLL的其他帖子松散地联系,但我想保持另一个开放.我的老板和我决定短期,我们只有一个DLL,一切都是硬编码的,但从长远来看,我们希望动态删除DLL作为报告,所以请不要将其标记为重复.我计划本周末试图在另一个线程中实现给我的方法.谢谢.
编辑 - 问题的第2部分:好的,这是我现在的课程:
public class Queries
{
#region Report Queries
#region Missing Code
string strMissingCode = "SELECT * FROM PARTS WHERE CODE IS NULL OR CODE = ''";
#endregion
#endregion
}
Run Code Online (Sandbox Code Playgroud)
我想把它改成这样的东西:
public class Queries : Dictionary<string, string>
{
}
Run Code Online (Sandbox Code Playgroud)
但我不希望他们必须使用构造函数来实例化它.我想要静态排序,所以我可以运行这样的代码:
class Reports
{
private List<ReportRecord> _lstRecrods = new List<ReportRecord>();
public List<ReportRecord> Records { get { return _lstRecords; } }
public Reports(string[] strDisplayedReports)
{
foreach …Run Code Online (Sandbox Code Playgroud)