2016-08-29 9 views
-1

私はあなたのタイトルを2番目にリピートするとこれをマークすると確信しています。私と一緒に抱きしめてください。複雑な問題を起こす。 :)ここまでの読書のための抽象クラスのインスタンスが正常に動作しない

ありがとう:D

だから、私が持っている私は、サービスがここで私はリストを作ってるんだ持っ

public abstract class InfoClass 
{ 
    public abstract string Brand { get; set; } 
    public abstract string BrandCount { get; set; } 
} 

あらましであるInfoClassと呼ばれるクラス、その行を試行して、同じ行為のインスタンスを作ってください。しかし、できない -

[WebMethod] 
    public void GetInfoList() 
    { 
     List<InfoClass> listInformations = new List<InfoClass>(); 
     . 
     . 
     .  //Going ahead in the program I've created a reader 
     . 
     . 
     . 
     . 
      while (rdr.Read()) 
      { 
       //This is the block not working 
       InfoClass Advertises = new InfoClass(); 
       Advertises.Brand = Convert.ToString(rdr["Brand"]);      
      } 

コードの代わりに私を助けてください。クラスは抽象クラスであると確信していますので、クラスレベルで変更することはできません。

+4

この方法でそれを使用する場合は、別のタイプの抽象型を継承し、抽象メソッド(複数可)を実施抽象クラス。それは全体のポイントです。抽象クラスを持っている場合、それを継承する別のクラスが必要であり、抽象クラスの抽象メンバの実装を提供します。あなたの例では、抽象クラスである必要はありません。たいていの場合、それはインターフェイスであり、そのインターフェイスを実装するクラスを作成する必要があります。 – TimothyP

+1

https://msdn.microsoft.com/en-us/library/sf985hc5.aspx – dotnetom

答えて

1

私はJavaにもっと使用されていますが、状況はC#でも似ているようです。あなたはdocumentation

に見ることができるよう

抽象クラスをインスタンス化することができない彼らは、インスタンス化できないクラスであり、部分的に実装、またはまったく実装されていないのどちらか頻繁に です。

したがってnew InfoClass();は無効です。 InfoClassを抽象化しないか、またはInfoClassを継承してインスタンス化する別のクラスを作成する必要があります。

1

任意の

public class ConcreteInfoClass : InfoClass {} 

それはANのインスタンスを作成することはできません今

InfoClass Advertises = new ConcreteInfoClass(); 
Advertises.Brand = Convert.ToString(rdr["Brand"]); 
+0

を参照してくださいLemme try ... that promising(y) – theLearner

関連する問題