如何检查对象中是否有特定类型的特定方法/属性?

时间:2016-04-20 11:36:06

标签: c# serialization reflection deserialization datacontractserializer

我有 DInfo 类存在于两个不同的命名空间中,即ABC.DomainABC.Common 我从数据库中获取xml body作为记录,我将其反序列化为相应的类型。 我必须找出所有使用属性ABC.Domain.DInfo属性的名称/属性的记录,并忽略类型ABC.Common.DInfo

我正在获取IEvent类型的记录,可能是FSubmittedGSubmitted

namespace ABC.Domain
{
    public class DInfo
    {
        public DateTime? Date { get; set; }
        public URef User { get; set; }
        public Decimal? L1 { get; set; }
        public Decimal? L2 { get; set; }
    }
}
namespace ABC.Common
{
    public class DInfo
    {
        public DateTime? Date { get; set; }
        public URef User { get; set; }
        public Decimal? L1 { get; set; }
        public Decimal? L2 { get; set; }
    }
}

public class Event : IEvent
{

    public Guid Id { get; set; }

    public Event() { }

    public int Number { get; set; }
}

public interface IEvent : IRBase
{
    Guid Id { get; set; }

    int Number { get; set; }

}
public interface IRBase
{
    string RUser { get; set; }
    string Sub { get; set; }
}

public abstract class REventBase : Event
{
    public Guid Id { get; set; }
}


public class FSubmitted : REventBase
{
    public RSummary NewForm { get; set; }
}
public class GSubmitted : REventBase
{
    public FRef NewForm { get; set; }
}

public class RSummary
{
    public Guid ID { get; set; }

    public FRef FRef { get; set; }

    public ABC.Common.DInfo Submitted { get; set; }

    public ABC.Common.DInfo Saved { get; set; }

    public ABC.Domain.DInfo Signed { get; set; }
}


public class FRef : NIdentifier<Guid>
{
    public FormType Type { get; set; }
    public Version Version { get; set; }
    public ABC.Common.DInfo Submitted { get; set; }
    public ABC.Domain.DInfo Saved { get; set; }
}

1 个答案:

答案 0 :(得分:0)

只要我理解你,你就想获得对象的命名空间,然后决定如何处理它。如果是这种情况,this应该有所帮助。