大家好,方法返回一個接口
我想在這行代碼
IDataReader myReader = questDatabase.ExecuteReader(getQuest);
我使用DAAB但我不知道如何和什麼的意思事實上,ExecuteReader(DbCommand)方法返回一個IDataReader接口。
任何人都可以解釋,請
大家好,方法返回一個接口
我想在這行代碼
IDataReader myReader = questDatabase.ExecuteReader(getQuest);
我使用DAAB但我不知道如何和什麼的意思事實上,ExecuteReader(DbCommand)方法返回一個IDataReader接口。
任何人都可以解釋,請
它可以讓你不需要知道你正在使用哪種類型的DataReader(即SqlDataReader, OleDbDataReader, EtcDataReader
),所以如果有一天你想改變你正在使用的datareader它不會影響你的邏輯,換句話說它給你抽象。 例如:
您可以在使用
其供應商使用
IDbCommand command = GiveMeSomeCommand();
IDataReader r = command.ExecuteReader();
不知道可以這樣:
private static IDbCommand GiveMeSomeCommand()
{
return new OleDbCommand();
}
,也可以是
private static IDbCommand GiveMeSomeCommand()
{
return new SqlCommand();
}
或其他。
編輯:
您還可以使用DBFactories。
DbProviderFactory factory = GiveMeSomeFactory();
IDbCommand command = factory.CreateCommand();
IDataReader r = command.ExecuteReader();
//and create more objects
IDataAdapter adapter = factory.CreateDataAdapter();
IDbConnection conn = factory.CreateConnection();
,然後在其它層創建提供商
private DbProviderFactory GiveMeSomeFactory()
{
if(something)
return SqlClientFactory.Instance;
else if(somethingElse)
return OracleFactory.Instance;
else if(notThisAndNotThat)
return MySqlFactory.Instance;
else
return WhateverFactory.Instance;
}
因爲接口的實現並不重要,只要該接口提供了API,它返回一個接口。
我真的非常感謝你們,我對你的奉獻感到驚訝,在這樣的社區裏感到非常幸運。 謝謝所有 – netseng 2009-02-04 13:24:20
「返回的接口」的真正含義:「返回的一些類實現該接口的實例」
在這種情況下,它返回非常相似SqlDataReader對象一個對象,讓您可以執行類似的方法.Read()並實現IDisposable和IDataRecord接口。
我真的非常感謝你所有,我對你的奉獻感到驚訝,在這樣的社交圈裏感到非常幸運。 感謝所有 – netseng 2009-02-04 13:23:40
這是一個類似的概念多態(即一個對象指針可以指向任何從Object繼承的引用類型? – iliketocode 2015-07-05 20:06:32
該方法將返回一個對象,它是一個類的實例,並且該類的類將支持IDataReader。
重點是,對象的類型並不重要,只是類實現接口的事實。
如果您駕駛的是汽車,您不需要知道它是福特還是豐田,就可以用同樣的方式駕駛汽車。
駕駛「界面」是一樣的,一旦汽車支持接口,你可以驅動它。
同上IDataReader,一旦返回的類支持接口,您可以使用它。
感謝所有,這是偉大的,是在這樣 – netseng 2009-02-04 13:12:38
它返回一個實現這個特定接口的對象,這就是你真正關心的。對象「是」IDataReader,並且可以執行IDataReader所具有的所有方法。
我真的很感謝大家,我對你們的奉獻精神令人吃驚的一個comunity,這是GRAT是在這樣的comunity。 感謝所有 – netseng 2009-02-04 13:22:22
我學習界面和有完全相同的問題。 Pablito的回答正是我所尋找的,並確認我正在構建我的實施。多謝你們!! – 2009-09-16 20:09:05