我有一个名为myConstraint
的对象,可能有一个名为Parameter
的属性。
Parameter
是一个具有Name
属性的对象,其属性为string。
我想检查Constraint
,如果它有属性Parameter
,请获取字符串Parameter.Name
,如果它等于“长度”,请将Constraint.Parameter
的值设置为myLengthParameter
。
我不能使用Constraint.Parameter,因为编译器在程序运行之前不知道对象是否具有属性Parameter。我试图使用反射,但我无法弄清楚这一点。我很感激你的帮助。
答案 0 :(得分:1)
使用is检查实例类型,然后将对象强制转换为Constraint
类型。 (参考J3soon的评论)
if (myConstraint is Constraint)
{
// cast and perform your operations here
}
答案 1 :(得分:1)
是的,你可以用反射来做到这一点。
由于约束变量可以包含任何值,因此您可以执行类似的操作。
var property = constraint.GetType().GetProperty("Parameter");
if (property != null)
{
var parameter = property.GetValue(constraint);
if (parameter != null)
{
var parameterName = parameter.GetType().GetProperty("Name").GetValue(parameter).ToString();
if (parameterName == "Length")
{
property.SetValue(constraint, myLengthParameter);
}
}
}