実行時まで、引数の真の値を確かに知ることはできません。
しかし、あなたはそれを取ることができるが、これらの拡張メソッド使用して、デフォルト値をです:、注意して使用保証されません
public static T GetImediateValueOrDefault<T>(Activity<T> activity, ModelItem modelItem)
{
if (activity == null)
return default(T);
var exprAsLiteral = activity as Literal<T>;
if (exprAsLiteral != null)
return exprAsLiteral.Value;
var exprAsVbValue = activity as Microsoft.VisualBasic.Activities.VisualBasicValue<string>;
if (exprAsVbValue != null)
return modelItem.GetDefaultValueOfScopedVariable<T>(exprAsVbValue.ExpressionText);
return default(T);
}
public static T GetDefaultValueOfScopedVariable<T>(this ModelItem modelItem, string variableName)
{
IEnumerable<ModelItem> scopedVariables = modelItem.GetScopedVariables();
ModelItem variableModelItem = scopedVariables.FirstOrDefault(v => Equals(variableName, v.Properties["Name"].ComputedValue));
if (variableModelItem == null)
throw new KeyNotFoundException();
Variable<T> variable = variableModelItem.GetCurrentValue() as Variable<T>;
if (variable == null)
return default(T);
return GetImediateValueOrDefault(variable.Default, modelItem);
}
を
あなたは変数がInArgumentに渡され、実行時に、参照私は渡される変数の名前を取得したい。 – Arvand
@Arvandあなたは設計時に価値を失うことはありません。実行時にそれを望みますか?それは間違いありませんか? 説明のために、なぜ実行時に変数名を使用したいのですか? –
変数はビジネスロジックに基づいて作成されるため、デザイナを開くときに変数が自動的にxamlファイルに作成され、ビジネスは変数についての感覚を持っているため、実行時に他の方法への私のカスタム活動。 –
Arvand