sam*_*113 2 c# static static-methods
我应该在以下两种情况下使用静态:
情况1)
public class RequestHeader
{
private string Username { get; set; }
private string Password { get; set; }
private string AccessKey { get; set; }
public string url { get; set; }
public string pageid { get; set; }
public string organizationid { get; set; }
private RequestHeader()
{
}
public static RequestHeader GetRequestHeader(string url, string pageid, string organizationid)
{
return new RequestHeader()
{
Username = "Some logic to fetch username",
Password = "Some logic to fetch password",
AccessKey = "Some access key",
url = url,
pageid = pageid,
organizationid = organizationid,
};
}
}
Run Code Online (Sandbox Code Playgroud)
案例2)
public class HttpClientHelper
{
public static HttpClient GetHttpClient(RequestHeader header)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
foreach (var property in header.GetType().GetProperties())
{
client.DefaultRequestHeaders.Add(property.Name, property.GetValue(header).ToString());
}
return client;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道静态不用于维持状态的地方.我相信我不是在这里维持任何国家.我将在类库中使用它,我将使用它们来调用休息服务.
唯一让我想在这里使用static的东西就是不要初始化这些类.(我知道这是一个很好的原因).
请让我知道你的想法.有没有我在这里看不到的东西.
注意:1)我知道一些属性的小套管.它与我完全无法控制的其他服务同步.2)如果我将来有多个RequestHeader,我可能会创建一个具有GetRequestHeader方法的IRequestHeader.所以不同的RequestHeaders将实现这一点.在这种情况下,我知道我不能在接口中保留静态方法.请保持这两个条件,让我知道你的想法.
你在这里看到的似乎是静态工厂模式的一个版本.这是一个众所周知的模式,使用起来非常好.
您可能还对Factory Pattern的非静态版本感兴趣.
我假设HttpClient不是"你的类",在这种情况下你当然不能在类本身内添加一个方法.
唯一让我想在这里使用static的东西就是不要初始化这些类.(我知道这是一个很好的原因).
从技术上讲,无论你如何操作(工厂方法或没有工厂方法),你都在实例化和初始化这些类,唯一的问题是你是否要使用工厂方法为你进行实例化和初始化.
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |