如何创建一个通用的函数接受不同的参数类型

问题描述:

考虑下面的代码:如何创建一个通用的函数接受不同的参数类型

var list = new SomeServiceType 
{ 
    Url = "htp://www.test.com/", 
    Credentials = new NetworkCredential(UserName, Password) 
}; 

此代码已经重复很多人说的10倍。所以,我决定在通过不同类型时使用一个通用函数来接受上面的代码。

我需要获得Url凭证作为新创建函数的响应。

作为参考,SomeServiceType是ServiceNowType, UserName和Password是String类型。

我试着用

public List<object>(....strucked here...) 
{ 
    ... 
    return ...//again strucked here....(neeed to return url and credentials).. 
} 

网址是字符串类型的NetworkCredential是C#类的

+0

如何,因为我在这个问题提到返回响应? – StackOverflow

+0

你想返回列表变量不是吗? –

+0

是的,需要返回列表。 – StackOverflow

您可以使用反射和激活创建方法,如下

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); 
+0

正是我需要的。谢谢,伟大的解决方案 – StackOverflow

+0

真的你是'c#国王'.. – StackOverflow

+0

非常好的答案。 –

你可以在asp.net不喜欢这些。

 public static List<SomeServiceType> MyFunction(string url, string UserName, string Password) 
     { 
      List<SomeServiceType> list = new List<SomeServiceType>(); 
      if (url != null && UserName != null && Password != null) 
      { 
       list = new SomeServiceType() 
       { 
        Url = "htp://www.test.com/", 
        Credentials = new NetworkCredential(UserName, Password) 
       }; 
      } 
      return list; 
     } 
+0

这不能给解决方案。 – StackOverflow

+0

hi @StackOverflow,我只是给你一个如何得到你想要的输出的例子,因为我没有你的正确数据,我不能给你确切的代码。 – Bharat

+0

好的..谢谢你的例子.. – StackOverflow