.Net参数属性使命名/可选参数仅在内部/私有可见?

时间:2011-01-03 12:55:15

标签: .net syntactic-sugar named-parameters

出于好奇,有没有办法写一个方法,例如像这样:

public static MyType Parse(string stringRepresentation, [Internal] bool throwException = true)
{
// parsing logic here that conditionally throws an exception or returns null ...
}

public static MyType TryParse(string stringRepresentation)
{
return this.Parse(stringRepresentation, true);
}

我想在内部减少代码冗余,但仍然符合例如(Try)Parse()的BCL方法签名,但是如果c#编译器在这种情况下可以生成第二个内部方法,那将是不错的。

那已经有点可能吗?到目前为止找不到任何东西。

2 个答案:

答案 0 :(得分:3)

我不知道你可以,但这不会给你相同的结果吗?

public MyType Parse(string stringRepresentation)
{
    return this.Parse(stringRepresentation, true);
}

internal MyType Parse(string stringRepresentation, bool throwException = true)
{
    // parsing logic here that conditionally throws an exception or returns null ...
}

答案 1 :(得分:1)

我知道这是一个迟到的答案,但它可能对其他人有帮助。

您可以使用 AttributeTargets.Parameter here is the msdn link)对您的属性类进行处理,这正是您所寻找的。

示例属性:

[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)]
public class InternalAttribute : Attribute
{
    // attribute code goes here
}

属性的用法:

public void Foo([Internal] type_of_parameter parameter_name)
{
      //code
}