我想查看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; }
}
}
}
答案 0 :(得分:2)
看起来非常完整。像大多数属性一样,它只关联一些值(许多没有值)以及属性本身的语义,因此反映属性附加到的成员,类型和/或程序集的代码可以检测它们关心的属性的存在,并根据需要读取属性的任何属性。
答案 1 :(得分:0)
事实上,您发布了ServiceKnownTypeAttribute类的真实源代码。属性只描述实体,它不包含任何逻辑。
答案 2 :(得分:0)
您可能还想查看Mono implementation