我想設置一個方法,從數據庫中檢索數據,並根據數據在那裏它將創建和水合一個類與通用組件。C#泛型返回的泛型類型設置方法不在調用
public class MyObject<T> where T : BaseMyType
{
T MyTypedObject { get; set; }
}
public class MyType1 : BaseMyType
{
string Key { get; set; }
}
public class MyType2 : BaseMyType
{
Guid Id { get; set; }
}
public MyObject<T> MyMethod<T>() where T : BaseMyType
{
if(Situation1)
return new MyObject(MyType1);
else
return new MyObject(MyType2);
}
此代碼抱怨的MyObject <MyType1>不能轉換到MYOBJECT <Ť>。現在我需要像這樣使用它:
var myObject = MyMethod();
這個調用當然會抱怨它不能從使用中推斷出類型。我理解編譯器的錯誤信息,我只是不知道如何去做我需要的。
鑑於這些在編譯時都不知道,所以根本不應該使用泛型。它不會幫助你;它只會阻礙你。 – Servy
你有更好的方法建議嗎?除了數據加載以外,任何地方都可以滿足我們的需求,但我還沒有想出如何完成這一件事。 –
爲什麼你需要泛型?接口可能已經足夠了 –