这是ServiceKnownTypeAttribute的完整源代码吗?

时间:2017-02-26 18:45:57

标签: c# .net custom-attributes

我想查看ServiceKnownType属性的源代码,因为我想知道尝试编写模拟其泛型版本的东西。我想从实际的源代码开始,然后修改它。

我查看了.NET源代码库,找到了this link,但代码非常稀疏,并且看起来不包含属性的实现。请参阅下面的代码。

我尝试使用反编译器,但结果代码看起来基本相同。我不明白这个属性在没有任何代码的情况下是如何工作的!

任何人都知道我在哪里可以找到实际的来源,假设它当然已经发布。

以下是该链接的源代码......

namespace System.ServiceModel
{
    [AttributeUsage(ServiceModelAttributeTargets.ServiceContract | ServiceModelAttributeTargets.OperationContract, Inherited = true, AllowMultiple = true)]
    public sealed class ServiceKnownTypeAttribute : Attribute
    {
        Type declaringType;
        string methodName;
        Type type;

        private ServiceKnownTypeAttribute()
        {
            // Disallow default constructor
        }

        public ServiceKnownTypeAttribute(Type type)
        {
            this.type = type;
        }

        public ServiceKnownTypeAttribute(string methodName)
        {
            this.methodName = methodName;
        }

        public ServiceKnownTypeAttribute(string methodName, Type declaringType)
        {
            this.methodName = methodName;
            this.declaringType = declaringType;
        }

        public Type DeclaringType
        {
            get { return declaringType; }
        }

        public string MethodName
        {
            get { return methodName; }
        }

        public Type Type
        {
            get { return type; }
        }
    }
}

3 个答案:

答案 0 :(得分:2)

看起来非常完整。像大多数属性一样,它只关联一些值(许多没有值)以及属性本身的语义,因此反映属性附加到的成员,类型和/或程序集的代码可以检测它们关心的属性的存在,并根据需要读取属性的任何属性。

答案 1 :(得分:0)

事实上,您发布了ServiceKnownTypeAttribute类的真实源代码。属性只描述实体,它不包含任何逻辑。

答案 2 :(得分:0)

您可能还想查看Mono implementation