Во-первых, обратите внимание, что decimal
нельзя использовать в качестве аргумента атрибута.Вы можете использовать double
или строку, а затем преобразовать ее в десятичную.
Ваш GetStringValue () должен работать, если вы замените
// Vals[i] = How to return String[]
на
Object val = item.GetValue(attribs[0], null);
Vals[i++] = val != null ? val.ToString() : "";
Если вы используете C # 4.0, вам не нужны три конструктора.Вы можете использовать необязательные аргументы:
public StringValueAttribute(string Username, string Password = "nothing", double something = 0)
{
...
}
А в более старых версиях C # вы можете использовать OptionalAttribute
:
public StringValueAttribute(string Username, [Optional] string Password, [Optional] double something)
{
...
}