문제

는 사람이 가지고 이를 실제적으로 일하는가?문서가 존재에 이 기능을 사용하도록 설정하는 방법이고 나는 문제에 대한 자세한 내용을 알고 특성의 예외에도 불구하고 3.5SP1 프로젝트입니다.

도움이 되었습니까?

해결책

내가 찾는 것은 그것으로 작동하지 않 내부/개인형,그러나 만드는 나의 종류 대중에 있습니다.이것이 의미하는 익명 형식의 하나:(

를 사용하여 반사판이 나는 방법을 찾았 ClassDataContract.IsNonAttributedTypeValidForSerialization(입력)하는 것을 결정합니다.그것은 마지막 줄인 것,킬러의 유형을 볼 수 있어야 합니다,그래서 내부/개인 형식이 허용되:(

internal static bool IsNonAttributedTypeValidForSerialization(Type type)
{
    if (type.IsArray)
    {
         return false;
    }
    if (type.IsEnum)
    {
        return false;
    }
    if (type.IsGenericParameter)
    {
        return false;
    }
    if (Globals.TypeOfIXmlSerializable.IsAssignableFrom(type))
    {
        return false;
    }
    if (type.IsPointer)
    {
        return false;
    }
    if (type.IsDefined(Globals.TypeOfCollectionDataContractAttribute, false))
    {
        return false;
    }
    foreach (Type type2 in type.GetInterfaces())
    {
        if (CollectionDataContract.IsCollectionInterface(type2))
        {
            return false;
        }
    }
    if (type.IsSerializable)
    {
        return false;
    }
    if (Globals.TypeOfISerializable.IsAssignableFrom(type))
    {
        return false;
    }
    if (type.IsDefined(Globals.TypeOfDataContractAttribute, false))
    {
        return false;
    }
    if (type == Globals.TypeOfExtensionDataObject)
    {
        return false;
    }
    if (type.IsValueType)
    {
        return type.IsVisible;
    }
    return (type.IsVisible && (type.GetConstructor(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, Globals.EmptyTypeArray, null) != null));

}

다른 팁

이 작업에 테스트 응용 프로그램다.

서비스 정의:

[ServiceContract]
public interface IService1
{

    [OperationContract]
    CompositeType GetData(int value);

}


public class CompositeType
{
    bool boolValue = true;
    string stringValue = "Hello ";

    public bool BoolValue
    {
        get { return boolValue; }
        set { boolValue = value; }
    }

    public string StringValue
    {
        get { return stringValue; }
        set { stringValue = value; }
    }
}

서비스템

public class Service1 : IService1
{
    public CompositeType GetData(int value)
    {
        return new CompositeType()
        {
            BoolValue = true,
            StringValue = value.ToString()
        };
    }

}

여러 가지가 있 직렬화 옵션에 WCF:데이터 계약,XML 직렬화하고 데이터와 원시 데이터 페이로드를 사용합니다.어떤 이들은 당신을 사용하려고?질문에서,그것은 당신을 사용하려고 다른 것보다 개체 장식 datacontact 특성이 있습니다.은 당신이 무엇을 물어?

그렇다,나는 사용하려고 시도하는 특성을 무료로 직렬화는 것으로 발표되었의 일부 SP1(http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/13/50934.aspx).저주 얻을 수 있다면 그것은 작동하고 문서가 없습니다.

아마도 내용의 추상적인 기본 클래스입니다 혼란에 문제가 추가로 모든 것을 알려진 유형 목록입니다.

그래,할 수 있으로 추상 클래스고 상속입니다.그것은 때로는 할 수 있습 엉망으로 직렬화.또한,그것은 수의 가시성을 클래스고 클래스 계층 구조뿐만 아니하는 경우 모든 것을 공개되지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top