私はDelphiコードをC#に変換しています。C#の 'プロパティタイプ'のないプロパティ
クラスがメインの「トランク」のすべての子である複合クラス構造を持っています。
デルファイでは、同じタイプのフィールドのプロパティとタイプを持つプライベート/保護フィールドを定義し、そのタイプをもう子クラスに書き込むことはできません。ここで
はビット(および機能)の例である:program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
Parent = class
strict protected
_myFirstField: Int64;
public
property MyFirstField: Int64 write _myFirstField;
end;
Child1 = class(Parent)
public
// Inherits the write/set behaviour..
// And it doesn't need to define the type 'over and over' on all child classes.
//
// ******* Note MyFirstField here has not type.... ************
property MyFirstField read _myFirstField; // Adding READ behaviour to the property.
end;
var
Child1Instance: Child1;
begin
Child1Instance := Child1.Create;
//Child1Instance.MyFirstField := 'An String'; <<-- Compilation error because type
Child1Instance.MyFirstField := 11111;
WriteLn(IntToStr(Child1Instance.MyFirstField));
ReadLn;
end.
あなたが見ることができるように、私は何度もプロパティタイプを定義する必要はありません。 将来、var型を変更する必要がある場合は、親クラスでのみ変更できます。
C#で同じ動作をする方法はありますか?
は、あなたがC#でくださいしようとしたものを表示します。通常のOOPのように、基本クラスで保護されたプロパティを持つことができます。これは、set/getと一緒に子クラスで利用できるようになり、その型定義ももちろん保持されます。 –
C#private/protectedプロパティの動作はまったく同じではありませんか? –
真剣に私がやりたいことを再開する必要があります:祖先クラスで宣言されたすべてのプロパティがあり、そのプロパティのセットだけを子クラスに「公開」したいと思います。すべてのプロパティを宣言せずに...型もアクセサーもありません。 – ferpega