返回值的自定义属性
本文关键字:自定义属性 返回值 | 更新日期: 2023-09-27 18:36:59
我目前正在玩属性类。我正在尝试在我的类的返回类型上使用属性,但不幸的是我的属性没有应用。我错过了什么吗?
public class Model
{
[return: Mandatory]
public int Integer
{
[return: Mandatory]
get { return 2; }
}
[Mandatory]
public TimeSpan Time => TimeSpan.FromHours(2);
[return: Mandatory]
public Model2 GetModel2 => new Model2();
[return: Mandatory]
public Model2 Test()
{
return new Model2();
}
}
如果我正在检查例如模型.测试()。获取类型() 我没有看到自定义属性...我显然缺少的部分可能是什么?:((Model. 是 (new Model()) ^^) 的缩写)
new Model().Test()
将返回一个 Model2
的对象,你GetType()
运行该对象。Model2
没有[MandatoryAttribute]
,对吧?因此,Model2
上的类型信息不会返回有关此内容的任何信息。
我在MSDN上查了一下,他们对它的用途非常模糊。但是在 MSDN 论坛上,我在返回值上发现了这个属性,从其中一个答案中我们得到了:
在这种情况下,"return"属性描述了有关属性返回的所有内容。 它不是在描述任何单一的回报,而是描述所有这些回报的特征。
- 瑞安/卡达克斯
所以我相信[return: Attribute]
只是关于方法及其可能返回的内容的信息,而不是可分配给返回对象的属性。
来自 MSDN 的示例
[Guid("12345678-1234-1234-1234-123456789abc"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface ISampleInterface
{
[DispId(17)] // set the DISPID of the method
[return: MarshalAs(UnmanagedType.Interface)] // set the marshaling on the return type
object DoWork();
}
因此,此处运行时使用此MarshallAsAttribute
从非托管环境正确操作返回值。