检查T对象是否有属性并设置属性

Chr*_*isK 6 c# generics windows-runtime

你好,我有一个通用方法

public async Task<T> MyMethod<T>(...)
{
 //logic here...
}
Run Code Online (Sandbox Code Playgroud)

我想在此方法中检查 T 对象是否具有特定属性,然后为此属性设置一个值:

我尝试创建一个动态对象并执行以下操作:

var result = default(T);
dynamic obj = result;

Error error = new Error();
error.Message = "An error occured, please try again later.";
error.Name = "Error";

obj.Errors.Add(error);
result = obj;

return result;
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用。

w.b*_*w.b 5

您应该使用 获取对象的运行时类型object.GetType,然后您可以使用 来检查它是否具有特定属性Type.GetProperty,如果是,则调用PropertyInfo.SetValue

PropertyInfo pi = obj.GetType().GetProperty("PropertyName");
if (pi != null)
{
    pi.SetValue(obj, value);
}
Run Code Online (Sandbox Code Playgroud)