1

我有以下代码:

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

    }

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

但是,你不能在 C# 中做到这一点。我如何实现我想要实现的东西?

编辑:

一位更有经验的成员编辑了我的帖子,所以我将保持原样。我不在乎使用字典(当时使用正确)

本质上,我只想以结构方式列出三种类型的数据,但我总是想引用一次存储值的类的实例,因此是静态的。现在我总是做 List of(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 来提取一些记录,例如 get record where guid == guid 等。这就是我将使用它的全部内容。

4

3 回答 3

2

辛格尔顿。

http://en.wikipedia.org/wiki/Singleton_pattern

于 2010-08-07T21:39:30.663 回答
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,然后取回什么信息?

于 2010-08-07T21:39:46.427 回答
1

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

所以,要么

  1. 将属性设置为构造函数中的值
  2. 稍后使用您添加的另一种方法设置它们,例如 Initialize(int a, ...)
于 2010-08-07T21:42:36.000 回答