"ImageElement : ConfigurationElement"클래스의 요소를 포함하는 "ImageElementCollection : ConfigurationElementCollection"클래스가 있습니다. 나는이의 항목을 액세스 할 때, 그러나이 컬렉션에 개체가 포함 된 것 같습니다.
MonitorConfig Config = (MonitorConfig)ConfigurationManager.GetSection("MonitorConfig");
:에 StackOverflow에 여기에 몇 가지 다른 매우 지적인 사람의 조언을 사용
은, 나는 내 프로그램에서 이러한 항목을 활용하는 방법을 알아 낸 "이미지"를 대상으로하기보다는 최선의 노력에도 불구하고의 ImageElement로 선언 되었기 때문에 컬렉션 ...
foreach (var image in Config.Images) Debug.WriteLine(image.Name);
... 나는 Name 속성에서 구불 구불 한 선으로 끝낸다.
내가 내 선언에서 잘못하고있어이 무엇인가, 아니면 거기 그 foreach 문에서 "ImageElement"에 대한 "VAR"를 교환하여이 뭔가 모두가 단지 다루는입니까? 구성 처리기에 대한
코드는 아래의 발견 :
public class MonitorConfig : ConfigurationSection
{
[ConfigurationProperty("Frequency", DefaultValue = 5D, IsRequired = false)]
public double Frequency
{
get { return (double)this["Frequency"]; }
}
[ConfigurationProperty("Images", IsRequired = false)]
public ImageElementCollection Images
{
get { return (ImageElementCollection)this["Images"]; }
}
}
[ConfigurationCollection(typeof(ImageElement), AddItemName = "Image")]
public class ImageElementCollection : ConfigurationElementCollection
{
public ImageElement this[object elementKey]
{
get { return (ImageElement)BaseGet(elementKey); }
}
public void Add(ImageElement element)
{
base.BaseAdd(element);
}
protected override ConfigurationElement CreateNewElement()
{
return new ImageElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((ImageElement)element).Name;
}
}
public class ImageElement : ConfigurationElement
{
[ConfigurationProperty("Name", IsRequired = true, IsKey = true)]
public string Name
{
get { return (string)this["Name"]; }
}
}
는'ImageElement의 image'에 대한'var에 image'을 전환하십시오. 그것은 모호 할 수 있으며 단지 type 객체로 취급 할 수 있습니다. (편집 : 당신의 foreach에, 나는 분명 아니었다면 ...) EDIT2 : 나는 당신이 이미 일을하고 작동 암시하는 것 같다했습니다 참조하십시오. 그렇다면 나는 "그렇습니다. 주위를 돌아 다니는 방법입니다."라고 말하려고합니다. –
네, 괜찮습니다. 그것은 나에게 이상하게 보입니다. X 형의 * 확실히 * * ("ImageElement"라고 표시된 툴팁에 "var"로 선언 할 때와 같이 입력되지 않습니다.) 내 처리기가 망가 졌다고 생각 했을까? –
ConfigurationElementCollection은 ICollection 및 IEnumerable을 구현합니다. ICollection 및 IEnumerable은 요소 형식에 대한 힌트가 없으므로 기본적으로 Object 형식의 요소를 제공합니다. 컬렉션이 generic interface IEnumerable을 구현하면 컴파일러는 var 대신 T를 사용해야한다고 결정할 수 있습니다. –