如何在C#中运行时使用参数实现静态字典<t>?</t>

时间:2010-08-07 21:32:58

标签: c# .net .net-4.0 static-constructor

我有以下代码:

   public static class ScraperMasterUriDetails
    {
        public static Dictionary<Guid, string> MasterUriDetails;

    }

但是我已经决定我需要在字典Dictionary<ScraperMasterUriDetails>中添加一个整数,所以我想我会在构造函数中添加属性和一些参数。

但是,你不能在C#中做到这一点。我如何实现我正在尝试实现的内容?

编辑:

一位经验丰富的成员编辑了我的帖子,所以我会留下它的样子。我不关心使用字典(当时正确使用它)

基本上我只想以结构方式列出三种类型的数据,除了我总是想要引用一次存储值的类的实例,因此是静态的。现在我总是做完(T)列表:

public class WebsiteTitles
{
    public string WebsiteId { get; set; }
    public string Keywords { get; set; }

    public WebsiteTitles(string websiteguid, string keywords)
    {
        WebsiteId = websiteguid;
        Keywords = keywords;
    }

    public WebsiteTitles()
    {
    }
}

然后完成以下

           List<WebsiteTitles> _siteTitles = new List<WebsiteTitles>();
            _siteTitles.Add(new WebsiteTitles("blah", "keyword")); 

然而在这种情况下,我想要类似于上面的内容,但静态(不想创建实例等。我非常感谢所有的建议,因此为什么我编辑我的帖子到提供更多信息。

作为一个注释,我可能想要使用LINQ来提取一些记录,例如记录guid == guid等等。这就是我将用它的所有内容。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

为什么不使用集合初始化程序语法? http://msdn.microsoft.com/en-us/library/bb384062.aspx

public static class ScraperMasterUriDetails
{
    public static List<WebsiteTitles> MasterUriDetails = new List<WebsiteTitles>()
    {
        new WebsiteTitles()
        {
            WebsiteId = Guid.NewGuid().ToString(),
            Keywords = "programming, fish, popsicles, nihilism",
        },
    };
}

如果您需要按ID查找网站,请务必使用字典:

public static class ScraperMasterUriDetails
{
    public static Dictionary<Guid, string> MasterUriDetails = new Dictionary<Guid, string>()
    {
        { Guid.NewGuid(), "programming, fish, popsicles, nihilism" },
        { new Guid("abcdef" /* etc */), "ankles, sprocket, glucose, the moon" },
    };
}

编辑前:

请注意,字典不是列表。

但是,您当然可以随时向静态成员添加值。它不必在编译时定义:

public class SomeOtherClass
{
    public void SomeNonStaticMethod(Guid key, string subUrl)
    {
        ScraperMasterUriDetails.MasterUriDetails[key] = "http://www.helpmeimstuckinsideasadnsserver.com/" + subUrl;
    }
}

如果您需要更多信息,请描述您用于“添加int”的结构。如果您在定义该结构时遇到问题,请解释您希望字典的用途。你传递了一个GUID,并获得了什么信息?

答案 2 :(得分:1)

自动调用静态构造函数,而不是由您调用。它无法知道要传入的参数。

所以,

  1. 在构造函数
  2. 中将属性设置为值
  3. 稍后使用您添加的其他方法设置它们,例如初始化(int a,...)