저는 Delphi 코드를 C#으로 변환하고 있습니다.C에서 '속성 유형'이없는 속성
클래스가 기본 자식 인 'trunk' 인 복잡한 클래스 구조를 사용하고 있습니다.
Delphi에서 동일한 유형의 해당 필드에 대한 유형 및 속성으로 개인/보호 필드를 정의 할 수 있으며 더 이상 하위 클래스에 유형을 쓰지 않습니다. 여기
조금 (및 기능) 예입니다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#에서 이와 동일한 문제가 발생하는 방법이 있습니까?
쇼. 일반적인 OOP에 따라 기본 클래스에서 보호 된 속성을 가질 수 있으며 set/get과 함께 하위 클래스에서 사용할 수 있으며 해당 유형 정의가 유지됩니다. –
C# 개인/보호 된 속성 동작이 정확히 동일하지 않습니까? –
정말로 내가하고 싶은 일을 재개해야합니다 : 나는 조상 클래스에서 선언 된 가능한 모든 속성을 갖고 있으며 하위 클래스에 해당 속성 집합 만 "게시"하고 싶습니다. 전체 속성을 다시 선언하지 않고 ... 유형도 접근하지 않습니다. – ferpega