如果我写下这个代码:
如果我写下这个代码:
侧记:写下如下内容:
将实现如下方式:
所以,似乎有一种方法可以区分是否存在OutAttribute...但是我无法找出如何(通过Reflection)。在这两种情况下,获取自定义属性信息的任何方法(GetCustomAttributes(),GetCustomAttributeData()等)都会报告OutAttribute存在于所有接口方法上。这也不是当前项目中现有代码的情况 - 如果我引用一个具有这些接口的程序集,则VS仍将生成上面显示的相同代码。
public interface IOutModifier
{
void OutModifier(out int a);
}
尝试在接口中实现它,VS会生成如下代码(预期结果):
public class IOM : IOutModifier
{
public void OutModifier(out int a)
{
throw new NotImplementedException();
}
}
如果我写下这个代码:
public interface IOutAndOutAttributeModifier
{
void OutAndOutAttributeModifier([Out] out int a);
}
Visual Studio会像这样实现:
public class IOOAM : IOutAndOutAttributeModifier
{
public void OutAndOutAttributeModifier([Out]out int a)
{
throw new NotImplementedException();
}
}
侧记:写下如下内容:
public interface IOutAttributeModifier
{
void OutAttributeModifier([Out] int a);
}
将实现如下方式:
public class IOAM : IOutAttributeModifier
{
public void OutAttributeModifier([Out] int a)
{
throw new NotImplementedException();
}
}
所以,似乎有一种方法可以区分是否存在OutAttribute...但是我无法找出如何(通过Reflection)。在这两种情况下,获取自定义属性信息的任何方法(GetCustomAttributes(),GetCustomAttributeData()等)都会报告OutAttribute存在于所有接口方法上。这也不是当前项目中现有代码的情况 - 如果我引用一个具有这些接口的程序集,则VS仍将生成上面显示的相同代码。
那么,我怎样才能区分一个只是"out"的参数和一个明确添加了"[Out]"属性的参数呢?