DynamicObject의 설명서에는 사전을 속성이있는 클래스 인 것처럼 작업 할 수있는 DynamicDictionary
의 예가 있습니다.개체 이니셜 라이저를 지원하는 사용자 지정 DynamicObject 클래스를 작성하는 방법
public class Test
{
public Test()
{
var result = Enumerable.Range(1, 5).Select(i => new DynamicDictionary
{
Id = i,
Foo = "Foo",
Bar = 2
});
}
}
: 다음 작업을 수행 할 수 있도록, 내가하고 싶은 무엇
public class DynamicDictionary : DynamicObject
{
Dictionary<string, object> _dictionary = new Dictionary<string, object>();
public int Count
{
get { return _dictionary.Count; }
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
string name = binder.Name.ToLower();
return _dictionary.TryGetValue(name, out result);
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
_dictionary[binder.Name.ToLower()] = value;
return true;
}
}
클래스를 수정할 수 있습니다 : 여기
는 (간결함을 위해 약간 수정)하는 클래스입니다 질문- 이것은 가능합니까?
- 그렇다면 어떻게됩니까?
개체 초기화 도구가 동적 개체와 작동하지 않습니다. – Magnus
기술적으로 @Magnus는 동적 개체에서만 작동하지만 비 동적 방법으로 만 작업 할 수 있습니다. 따라서 동적 객체가 동적이지 않은'Id' 속성을 가지고 있다면 객체 초기화 도구를 사용할 수 있습니다. 하지만이 질문에 대답하는 데 도움이되지 않습니다. – svick
"정상적인"속성의 경우 true, 제대로 작동합니다. 나는 당신이'IEnumerable>'를 취하는 생성자를 추가하고 그것을 사용하여 사전을 생성하는 콜라드를 추측한다. –
Magnus