私はpdfクラスライブラリプロジェクトに取り組んでいます。すべての出力プロセスに基本抽象クラスを作成します。ここ VC++/CLIの抽象メソッド実装の問題C#
はコードです:public ref class PDFPrinter
{
internal:
int index;
SPDFPrinter* p;
public:
PDFPrinter();
virtual property int HorizontalDPI { int get(){ return 72; } }
virtual property int VerticalDPI { int get(){ return 72; } }
virtual property bool UseMediaBox { bool get(){ return true; } }
virtual property bool CropPage { bool get(){ return true; } }
virtual property Second::PDF::PageRotation PageRotation
{ Second::PDF::PageRotation get()
{return Second::PDF::PageRotation::Rotate0; }
}
virtual property bool IsUpsideDownCoordinateSystem { bool get() = 0; }
virtual property bool CanUseDrawChar { bool get() = 0; }
virtual property bool IsType3CharsInterpretted { bool get() = 0; }
virtual property bool CanUseTilingPatternFill { bool get() = 0; }
virtual property bool CanUseShadedFills{ bool get() = 0; }
virtual property bool CanUseDrawForm{ bool get() = 0; }
virtual property bool CanResolveText { bool get() = 0; }
virtual property bool CanCreateAntialiasedVectors { bool get() = 0; }
virtual bool CanDrawPageSlice(PDFPage page,
System::Drawing::PointF resolution, Second::PDF::PageRotation rotation,
System::Drawing::Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting) = 0;
};
、ここでのメタデータである:私が得る
class Printer : PDFPrinter
{
public override bool CanCreateAntialiasedVectors
{
get { throw new NotImplementedException(); }
}
public override bool CanResolveText
{
get { throw new NotImplementedException(); }
}
public override bool CanUseDrawChar
{
get { throw new NotImplementedException(); }
}
public override bool CanUseDrawForm
{
get { throw new NotImplementedException(); }
}
public override bool CanUseShadedFills
{
get { throw new NotImplementedException(); }
}
public override bool CanUseTilingPatternFill
{
get { throw new NotImplementedException(); }
}
public override bool IsType3CharsInterpretted
{
get { throw new NotImplementedException(); }
}
public override bool IsUpsideDownCoordinateSystem
{
get { throw new NotImplementedException(); }
}
public override bool CanDrawPageSlice(PDFPage page,
System.Drawing.PointF resolution, PageRotation rotation,
System.Drawing.Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting)
{
throw new NotImplementedException();
}
}
:私はこのようなC#で、このクラスを使用しようとすると
using System;
using System.Drawing;
namespace Second.PDF
{
public abstract class PDFPrinter
{
public PDFPrinter();
public abstract bool CanCreateAntialiasedVectors { get; }
public abstract bool CanResolveText { get; }
public abstract bool CanUseDrawChar { get; }
public abstract bool CanUseDrawForm { get; }
public abstract bool CanUseShadedFills { get; }
public abstract bool CanUseTilingPatternFill { get; }
public virtual bool CropPage { get; }
public virtual int HorizontalDPI { get; }
public abstract bool IsType3CharsInterpretted { get; }
public abstract bool IsUpsideDownCoordinateSystem { get; }
public virtual PageRotation PageRotation { get; }
public virtual bool UseMediaBox { get; }
public virtual int VerticalDPI { get; }
public abstract bool CanDrawPageSlice(PDFPage page, PointF resolution,
PageRotation rotation, Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting);
}
}
この奇妙なエラー:
エラー1 'Second.PDFLib.CSharp.Test.Printer' が抽象的継承され実装されていない メンバー 'Second.PDF.PDFPrinter.CanDrawPageSlice()' C:のVisual Studioの \テスト\プロジェクト\ \ Second.PDFLib .CSharp.Test \ Program.csを8 11 Second.PDFLib.CSharp.Test
エラー2「Second.PDFLib.CSharp.Test.Printer.CanDrawPageSlice(Second.PDF.PDFPage、 System.Drawing.PointF、 [適切なメソッドが見つからない] C:\ Projects \ Visualをオーバーライドする Studio \ test \ Second.PDFLib.CSharp.Test \ Program.cs 51 30 Second.PDFLib.CSharp.Test
このエラーを解決するにはどうすればよいですか?これだけ抽象メソッド(CanDrawPageSlice)エラーを生成します。
は
P.Sはありがとうございます。この方法がないと問題はありません。
EDIT
恥を知れ!恥!恥!私には恥ずべき! :)それは完全に私の間違いです!
私は..問題のソースは、それはようにする必要があり、私はここでトップレベルの演算子(^)を使用するのを忘れ++クラス
(PDFPageページ)
virtual bool CanDrawPageSlice(PDFPage page,
System::Drawing::PointF resolution, Second::PDF::PageRotation rotation,
System::Drawing::Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting) = 0;
はC考え出し:
virtual bool CanDrawPageSlice(PDFPage^ page,
System::Drawing::PointF resolution, Second::PDF::PageRotation rotation,
System::Drawing::Rectangle slice, bool useMediaBox,
bool cropEnabled, bool isPrinting) = 0;
overrideを入力し、VSにパラメータリストを入力させるか、自分で入力したかによってオーバーライドを生成しましたか?最初の4つのパラメータに対して、基本クラスが異なるクラスを取得する可能性はありますか? –
ちょうど "実装抽象クラス 'PDFPrinter'"オプション..私はそれが自動生成されたことを意味します。 –
あなたの解決策を取って、あなた自身の質問に答え、正しい答えとしてそれを選択してください。ちょっと奇妙に思えるかもしれませんが、これはこのための標準的な手順です。 – Will