인사말 동료 회원, 문제의 상황은입니다 : 내가 발견 생성자을 후손 클래스에 Activator.CreateInstance로를 호출하려고 없지만, 있어보호 된 생성자가있는 객체의 인스턴스를 만들 수 있습니까?
public abstract class BaseClass
{
protected BaseClass()
{
// some logic here
}
protected BaseClass(Object parameter) : this()
{
// some more logic
}
}
public class Descendant : BaseClass
{
// no constructors
}
.
에 Descentant 클래스에을 명시 적으로 정의해야합니까? BindingFlags.Instance | BindingFlags.NonPublic
주 1 : 내가 사용했습니다
바인딩이 있습니다 그것이 어떤 영향을해야하는지 나는 현실에서 AppDomain.CreateInstanceAndUnwrap()를 호출하고 있습니다.
domain.CreateInstanceAndUnwrap(path, typeName, false, BindingFlags.Instance |
BindingFlags.NonPublic, null, new[] { parameter }, null, null);
주 2 : 나는 명시 적으로 작동 후 후손 클래스의 보호 생성자를 정의하지만 가능하면이를 방지하려는 경우.
문제는 생성자가 실제로 상속되지 않으므로 파생 된 유형을 검색하면 비생산적인 것으로 나타납니다. – dlev
그 사실을 알고 있지만, 다른 프로그래머가 그 하나의 기본 생성자를 계속해서 구현하도록하고 싶지는 않습니다. (나는 이것도 싫어합니다). – SmartK8
그 사실을 안다면 다른 접근법이 필요하다는 것도 알고 있습니다. 호출하려는 생성자가 존재하지 않습니다! – dlev