2012-09-20 101 views
-5

为什么不能这样做?创建类型字典的属性

这是记录器类

public Dictionary<string, string> customProperties 
     { get; set; } 

这是在接口属性的proerty ...

Dictionary<string, string> customProperties 
     { get; set; } 

然后调用它像这样...

DatabaseLogger.ILogger logger = new DatabaseLogger.Logger(); 

logger.customProperties.Add("companyName", "Company"); 
logger.customProperties.Add("application", "application"); 

我得到NullReferenceExcpetion - 我该如何避免它?

+3

是什么让你认为你不能做到这一点:

DatabaseLogger.ILogger logger = new DatabaseLogger.Logger(); logger.customProperties = new Dictionary<string, string>(); logger.customProperties.Add("companyName", "Company"); logger.customProperties.Add("application", "application"); 

虽然这可能会在Logger构造能够更好地完成? – Oded

+0

你绝对可以做到这一点。你只需要首先初始化你的字典对象。请参阅Oded的答案 – Icemanind

+1

这里没有问题。只有**不支持支持证据(错误信息,例外等)的声明 – 2012-09-20 19:46:23

回答

2

唯一缺少的是属性的初始化 - 它是null否则(意味着调用Add就会抛出NullReferenceException)。

public Logger() 
{ 
    customProperties = new Dictionary<string, string>(); 
} 
+0

完美的作品。谢谢。 –

+0

它不会让我回答出于某种原因,直到我等了4分钟或类似的东西。 –