다른 개체의 속성과 DataValue
이라는 개체를 가지고 있지만 DataValue
을 반환하려는 유형은 다른 속성의 개체에 포함 된 정보에 따라 다릅니다. 내 길을 확신하는 것이 최선의 방법입니다.올바른 데이터 형식이 반환되지 않을 수있는 디자인 문제
저는 AssetStructure라는이 비즈니스 객체를 가지고 있습니다.
AssetStructure 개체에는 기본적으로 해당 필드에 보관할 수있는 데이터, 특정 데이터 형식의 기본값 및 일부 표시 정보 속성에 대한 정보가 들어있는 일련의 개체 인 IAssetStructureField 개체의 일반 목록이 들어 있습니다. IAssetStructureField 인터페이스를 구현하는 각 객체는 다른 데이터 유형을 보유합니다. 예를 들어, DefaultValue의 유형은 string 일 수 있고 다른 유형은 List<ofCustomType>
일 수 있습니다.
AssetDataField라는 일반 개체 목록을 포함하는 내 Asset 개체가 있습니다. AssetDataField에는 AssetStructureField를 포함하는 속성과 DataValue, 즉 해당 StructureField에 대한 자산 데이터가 포함 된 속성이 있습니다.
내 문제는 AssetDataField DataValue 속성의 데이터 형식이므로 AssetStructureField 개체의 세부 정보에 따라 달라질 필요가 있습니다. 이 StructureField는 Asset (데이터 유형 List<UserGroups>
)에 대한 액세스 권한이있는 모든 사용자 그룹을 나타내는 데이터를 보유 할 수 있으며 또 다른 하나는 설명 필드 (데이터 유형 문자열) 일 수 있으므로 AssetDataField에서 나오는 DataValue가 동일한 유형이어야합니다.
내가 지금하고있는 일 중에서 생각하고있는 것, 그리고 아마도 훨씬 더 잘 수행 할 수 있다고 생각하는 것은 AssetDataField.DataValue 객체를 반환하고 AssetDataField.StructureField.DefaultValue의 typeof로 캐스팅하는 것입니다.
object fieldValue;
object fieldDefaultValue;
Asset certainAsset = new Asset(32423);
foreach (AssetDataField dataField in certainAsset.DataFields)
{
fieldDefaultValue = datafield.StructureField.DefaultValue;
fieldValue = datafield.DataValue as typeof(fieldDefaultValue);
// then do stuff depending on what typeof(fieldValue) is. This is where I
// see things getting particularly ugly. Not only just because that
// this class here will need to know the possible types that may be
// returned, so it can deal.
if (typeof(fieldValue) == whatever)
{
// deal;
}
else if (typeof(fieldValue) == whatever2)
{
// deal differently;
}
}
누구에게 의견이 있습니까? 나는 완전한 재실행을 반대하지 않는다. 정말 오래간만해서 죄송합니다. 상황을 잘 설명하려고했습니다. 도와 주려는 UML 다이어그램을 만들려고했지만 ArgoUML이 작동하고있었습니다. 귀하가 제공 할 수있는 모든 통찰력에 감사드립니다.
어리 석음 때문에 명확성을 제공하려는 시도가 끔찍하게 실패 했습니까? – Billyhole