考虑下面的代码:
var list = new SomeServiceType
{
Url = "htp://www.test.com/",
Credentials = new NetworkCredential(UserName, Password)
};
这段代码已被重复多次,说了10次。因此,我决定使用一个通用函数,该函数在传递不同类型时会接受上述代码。
我需要获取Url和Credentials作为新创建函数的响应。
作为参考,SomeServiceType为ServiceNowType,UserName和Password为String。
我尝试过
public List<object>(....strucked here...)
{
...
return ...//again strucked here....(neeed to return url and credentials)..
}
url为字符串类型,NetworkCredential为c#类
您可以使用反射和激活器创建方法,如下所示
public T MyMethod<T>(string url, string userName, string userPassword) {
var myService = Activator.CreateInstance(typeof(T));
System.Reflection.PropertyInfo URL = myService.GetType().GetProperty("Url");
System.Reflection.PropertyInfo NetworkCred = myService.GetType().GetProperty("Credentials");
URL.SetValue(myService, url, null);
NetworkCred.SetValue(myService, new System.Net.NetworkCredential(userName, userPassword), null);
return (T)myService;
}
呼叫为
var list = MyMethod<SomeServiceType>(url,userName,userPassword);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句