以下代碼有什麼問題?我看不到下面提到的錯誤的原因。我正在使用Mono,這可能是Mono中的一個錯誤,它會在VStudio中無誤地編譯嗎?沒有使用Mono的泛型類型參數的裝箱或類型參數轉換
public static class ClientFactory {
public static T CreateClient<T, I>()
/* error here */
where T : ClientBase<I>, I
where I : class {
return CreateClient<T, I>(null, null);
}
public static T CreateClient<T, I>(string endpointConfigurationName)
/* error here */
where T : ClientBase<I>, I
where I : class {
return CreateClient<T, I>(endpointConfigurationName, null);
}
public static T CreateClient<T, I>(string endpointConfigurationName, string remoteAddress)
/* error here */
where T : ClientBase<I>, I
where I : class {
return CreateClient<T, I>(endpointConfigurationName, remoteAddress, Settings.Default.UserName, Settings.Default.Password);
}
public static T CreateClient<T, I>(string endpointConfigurationName, string remoteAddress, string userName, string password)
/* NO error here, this method compiles fine */
where T : ClientBase<I>, I
where I : class {
T client;
/* get client instance */
/* do stuff with it */
return client;
}
}
我得到的編譯錯誤:
…/ClientFactory.cs(14,14): Error CS0314: The type `T' cannot be used as type parameter `T' in the generic type or method `….ClientFactory.CreateClient(string, string)'. There is no boxing or type parameter conversion from `T' to `System.ServiceModel.ClientBase' (CS0314)
我複製你的代碼到一個新的VC#2010項目,改變'/ *做的東西* /'來'客戶端=默認(T);'並用''「'替換兩個設置。編譯好,沒有編譯器錯誤。 – dtb
那麼這可能是Mono中的一個錯誤嗎? – knittl
您正在使用哪個版本的'dmcs'? – dtb