Jest to kontynuacja pytanie How do I get default values of optional parameters?Różnica między ParameterInfo.DefaultValue i ParameterInfo.RawDefaultValue
Od documentation, DefaultValue:
Pobiera wartość wskazującą wartość domyślną, jeśli parametr ma wartość domyślną.
Ta właściwość jest używana tylko w kontekście wykonania. W kontekście tylko do refleksów należy użyć właściwości RawDefaultValue.
Wartość domyślna jest używana, gdy rzeczywistej wartości nie określono w wywołaniu metody . Parametr może mieć wartość domyślną, która jest pusta. Ten numer różni się od przypadku, w którym wartość domyślna nie jest zdefiniowana.
Od documentation, RawDefaultValue:
Pobiera wartość wskazującą wartość domyślną, jeśli parametr ma wartość domyślną.
Ta właściwość może być używana zarówno w kontekście wykonywania, jak iw kontekście tylko do refleksji.
Wartość domyślna jest używana, gdy rzeczywistej wartości nie określono w wywołaniu metody . Parametr może mieć wartość domyślną, która jest pusta. Ten numer różni się od przypadku, w którym wartość domyślna nie jest zdefiniowana.
Dokumentacja jest bardzo podobna, z wyjątkiem tej, która dotyczy kontekstu refleksji, a inne nie. Jaka to różnica? Kiedy w ogóle jest używane w ogóle bez odbicia? Chodzi mi o to, jak uzyskać wartość domyślną bez refleksji? Czy czegoś brakuje?
Aktualizacja
Stworzyłem dwa przeciążeń tak:
public void Required(string value)
{
}
public void Optional(string value = "", int i = -1)
{
}
testowałem z:
var f = requiredInfo.GetParameters().Select(p => p.DefaultValue).ToArray();
var g = requiredInfo.GetParameters().Select(p => p.RawDefaultValue).ToArray();
var h = optionalInfo.GetParameters().Select(p => p.DefaultValue).ToArray();
var i = optionalInfo.GetParameters().Select(p => p.RawDefaultValue).ToArray();
//f equals g and h equals i in every way!
Więc jaka jest różnica biorąc pod uwagę, że moje pokazy testowe (wszystko w świetle odbitym kontekst) bez żadnej różnicy?
Być może ten link pomoże ci w kontekście wyłącznie refleksyjnym: http://msdn.microsoft.com/en-us/library/ms172331.aspx – rpeshkov