'업무'라는 비즈니스 엔터티가 포함 된 응용 프로그램이 있습니다. 이 엔터티에는 고정 된 속성 집합뿐 아니라 확장 속성으로 작동하는 기능이 있습니다. 이것은 RavenDB에 저장되어 언제 다른 프로그램에서이 데이터 저장소를 조회 할 때익명 형식을 역 직렬화로 역 직렬화
namespace RavenResearch
{
public class Task
{
public Guid TaskId { get; set; }
public DateTime CreatedDate { get; set; }
public dynamic DynamicProperties { get; set; }
}
}
, 그것은, liks에게 물론이
{
"TaskId": "9cac592f-98ec-4fda-a823-e5402736078e",
"CreatedDate": "2011-09-22T10:25:35.2701544+12:00",
"DynamicProperties": {
"$type": "<>f__AnonymousType0`2[[System.Int32, mscorlib],[System.String, mscorlib]], RavenResearch",
"MatterNumber": 0,
"CustomerNumber": "37"
}
}
모양 :
그래서, 스키마는 다음과 같습니다 int와 문자열을 포함하는 익명 형식을 찾습니다. 다른 프로그램은 원래 문서를 저장 한 EXE 파일입니다.이 파일을 참조해야 할 필요는 없습니다.
동적 속성을 제거하는 가장 좋은 방법은 무엇입니까? 제 목표는 Raven의 Task 객체 목록을 쿼리하고이를 UI에서 렌더링하기 위해 Xaml에 전달할 수 있다는 것입니다. 이것이 Expando에 대한 데이터 바인딩이 내게 매력적이며 속성을 컴파일 할 때 알 필요가없는 이유입니다.
나는이
new RavenResearch.Task()
{
TaskId = Guid.NewGuid(),
CreatedDate = DateTime.Now,
DynamicProperties = new
{
MatterNumber = 0,
CustomerNumber = "37"
}
}
@Jacob 같은 문장과 인스턴스 (까마귀에 저장) 작성 : 나는 사전을 사용하면 내가 동적 속성에 대한 모든 유형의 정보를 잃게 - 그러나, 내가 좋아하는 뭔가를 할 수 이 경우 :
public class Task
{
public Guid TaskId { get; set; }
public DateTime CreatedDate { get; set; }
public Dictionary<string, SimpleValue> DynamicProperties { get; set; }
}
public abstract class SimpleValue
{
}
public class SimpleValue<T> : SimpleValue
{
public T Value
{ get; set; }
public SimpleValue(T value)
{
this.Value = value;
}
}
그렇다면 Matter Number 및 Customer number에 대한 모든 유형 정보가 손실됩니다. – Adam
그들은 여전히 int와 string입니다. – Jeremy