2017-07-04 14 views
-2

イム私のC#コードでエラーを取得し、エラーイムが取得エラー延びる形状クラス

namespace Memory 
{ 
    class Meme : Shape 
    { 
     public int used { get; set; } 
     public string name { get; set; } 

     protected override Geometry DefiningGeometry => throw new NotImplementedException(); 
    } 
} 

である理由私が把握カント:

System.NotImplementedException:「メソッドまたは操作であります実装されていません。インスタンスを作成

コード:

options.Add(new Meme() 
    { 
    name = option, 
      used = 0, 
      Width = 50, 
      Height = 50, 
      Fill = Brushes.Red 
     }); 
+10

あなたのコードに 'NotImplementedException()'行がスローされましたか? –

+0

あなたのDefiningGeometryがその例外をスローしています。コードをよく読んでください。 – Harsh

+1

だから私は非常にC#に新しいですが、その行を追加してクラスを自動完成しました。 –

答えて

0

カスタムShapeクラスは、実際にいくつかの種類のGeometryを返すことになっています。これは、少なくともコンパイルします:

class Meme : Shape 
{ 
    public int used { get; set; } 
    public string name { get; set; } 

    protected override Geometry DefiningGeometry 
    { 
     get 
     { 
      return new EllipseGeometry(new Point(50, 50), 45, 20); 
     } 
    } 
} 

をしかし、あなたはDefiningGeometryプロパティから戻るには何のジオメトリわからない場合、あなたは本当に最初の場所でカスタムShapeクラスを作成するかどうかを自分自身に尋ねるかもしれません...

-1

あなたが示されたコードだけの作品を見て:あなたはDefiningGeometryが抽象的財産だったことを考えると、クラスを「拡張」されている場合、あなたは明示的にそれのための実装を提供する必要があるでしょう

1)。 C#は自動的に 'NotImplementedException'を使って実装し、少なくともコンパイルできるようにします。

2)インスタンスを作成するコードを試しましたが、上記に基づいて、 'DefiningGeometry'プロパティを呼び出すべきではありません。したがって、実際には 'NotImplementedException'をスローするべきではありません。その例外を引き起こす可能性のあるコードがコード内に存在することがあります。

- >あなたのコードがDefiningGeometryメソッドを呼び出すかどうかを確認するための実際の実装を提供することをお勧めします。これを変更することなく、コードをコンパイルする必要がありますが、今度は例外が発生しない場合は、他のコードがこのプロパティを呼び出すことがあります。

- >このコードでは、name = optionのオプションは、別の場所で宣言された変数です(別のメソッドを呼び出す 'get'実装はありません) - これはおそらく別の可能な説明。

+0

downvoteの理由はありますか? – hsoesanto

関連する問題