我可能没有正确,但我在WebMethod上面看到了类似的东西:
[return:(XmlElement("Class2"),IsNullable = false)]
public Class2 MEthod1()
{
}
我首先看到了vb版本,并使用转换器将其转换为c#。我以前从未见过它。它位于vb 6 asmx文件中。
答案 0 :(得分:16)
它是一个属性目标,并且在您的示例中使用它来消除其他元素返回值的使用歧义:
// default: applies to method
[SomeAttr]
int Method1() { return 0; }
// applies to method
[method: SomeAttr]
int Method2() { return 0; }
// applies to return value
[return: SomeAttr]
int Method3() { return 0; }
创建属性时,您可以指定可以应用属性的语言元素。这在以下示例中说明。
有关可用目标的列表,请参见此处:
http://msdn.microsoft.com/en-us/library/system.attributetargets.aspx
namespace AttTargsCS
{
// This attribute is only valid on a class.
[AttributeUsage(AttributeTargets.Class)]
public class ClassTargetAttribute : Attribute {
}
// This attribute is only valid on a method.
[AttributeUsage(AttributeTargets.Method)]
public class MethodTargetAttribute : Attribute {
}
// This attribute is only valid on a constructor.
[AttributeUsage(AttributeTargets.Constructor)]
public class ConstructorTargetAttribute : Attribute {
}
// This attribute is only valid on a field.
[AttributeUsage(AttributeTargets.Field)]
public class FieldTargetAttribute : Attribute {
}
// This attribute is valid on a class or a method.
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method)]
public class ClassMethodTargetAttribute : Attribute {
}
// This attribute is valid on any target.
[AttributeUsage(AttributeTargets.All)]
public class AllTargetsAttribute : Attribute {
}
[ClassTarget]
[ClassMethodTarget]
[AllTargets]
public class TestClassAttribute {
[ConstructorTarget]
[AllTargets]
TestClassAttribute() {
}
[MethodTarget]
[ClassMethodTarget]
[AllTargets]
public void Method1() {
}
[FieldTarget]
[AllTargets]
public int myInt;
static void Main(string[] args) {
}
}
}
答案 1 :(得分:5)
这是一个属性,用于修改方法的返回值如何序列化为XML。
通常,[return: Attribute]
语法用于指示该属性适用于方法的返回值。