我在处理XML文档的类中有一个静态方法(相关)(不那么相关)。该方法看起来像这样......
public static bool ProcessFormFile(IFormFile formFile, ModelStateDictionary modelState, string fileExtensionToValidate = "docx")
{
//...some logic & stuff
MemberInfo property = typeof(UploadTemplateViewModel).GetProperty(formFile.Name.Substring(formFile.Name.IndexOf(".") + 1));
//... all the rest
}
正如您所看到的,我使用反射从UploadTemplateViewModel
获取某些属性。问题是我需要使用SomeOtherViewModel
这样的另一个类动态,并在方法中使用它。
我尝试过使用这样的东西......
public static bool ProcessFormFile(IFormFile formFile, ModelStateDictionary modelState, T entity, string fileExtensionToValidate = "docx") where T : class
...但我得到了Constraints are not allowed on non-generic declarations
。这是我一直想要了解更多信息的topice,但这是我第一次在真实情况下使用它。
我怎样才能做到这一点?将方法从静态更改为公共或类似的东西?提前谢谢。
该方法有效,我可以通过反射得到属性,我只需要使用typeof(somethingInMethodParameters).GetProperty()
答案 0 :(得分:5)
你的方法是静态的/公共的/无论什么都没关系,你在这里看到的错误信息是因为你错过了泛型类型说明符。例如:
public static bool ProcessFormFile<T>(...) where T : class
// ^^^
// Add this
现在您可以在反射代码中使用T
:
MemberInfo property = typeof(T).GetProperty(...)