婁被簡化我的代碼的版本:通用類工廠問題
public interface IControl<T>
{
T Value { get; }
}
public class BoolControl : IControl<bool>
{
public bool Value
{
get { return true; }
}
}
public class StringControl : IControl<string>
{
public string Value
{
get { return ""; }
}
}
public class ControlFactory
{
public IControl GetControl(string controlType)
{
switch (controlType)
{
case "Bool":
return new BoolControl();
case "String":
return new StringControl();
}
return null;
}
}
的問題是在ControlFactory類的getControl方法訪問。因爲它返回IControl並且我只有一個通用接口IControl < T>。我不能提供T,因爲在Bool的情況下,它會布爾和字符串的情況下,它將是字符串。
任何想法,我需要做的,以使其工作?
@Vadim - 我強烈建議您使用Daniel的解決方案,他在比較類型而不是使用字符串。使用該類型的名稱更容易出錯。 – 2009-04-29 19:43:05