假设下面的代码(请阅读我的问题在最终的类代码注释):如何通过一个通用类作为参数的非通用类的构造函数
//This is my Generic Class
public class ClientRequestInfo<K, V>
{
public string Id { get; set; }
private Dictionary<K, V> parameters;
public ClientRequestInfo()
{
parameters = new Dictionary<K, V>();
}
public void Add(K key, V value)
{
parameters.Add(key, value);
}
}
public class ProcessParameters()
{
private void CreateRequestAlpha()
{
ClientRequestInfo<int, string> info = new ClientRequestInfo<int, string>();
info.Add(1, "Hello");
SynchRequest s = new SynchRequest(info);
s.Execute();
}
private void CreateRequestBeta()
{
ClientRequestInfo<int, bool> info = new ClientRequestInfo<int, bool>();
info.Add(1, true);
SynchRequest s = new SynchRequest(info);
s.Execute();
}
}
public class SynchRequest
{
//What type should I put here?
//I could declare the class as SynchRequest<K, V> but I don't want
//To make this class generic.
private ClientRequestInfo<????,?????> info;
private SynchRequest(ClientRequestInfo<?????,?????> requestInfo)
{
//Is this possible?
this.info = requestInfo;
}
public void Execute()
{}
}
为什么你不希望使用一个通用的SynchRequest? – AnthonyWJones 2009-09-29 17:06:39
你可以谈谈你将在信息成员的Execute()中做什么吗?这可以为功能相当的答案提供基础。 – joshperry 2009-09-29 17:12:37
因为类SynchRequest由其他类项目的打了个SynchRequest的目的是运行服务,不提供任何类型的有关客户的信息。还有一些类使用SynchRequest,并且不指定或需要任何客户端信息。所以不是使这个类变得通用的好方法。 (SynchRequest有另一个空的构造函数) – Ioannis 2009-09-29 17:16:15