형식 매개 변수에 매개 변수가 개체 인스턴스의 형식임을 지정하는 방법이 있습니까? 예를 들어파생 클래스에 대한 일반 매개 변수의 "this"유형
, 설명하기, 내가 가진 :
내 예를 들어public abstract class Model
{
public int Prop1 { get; set; }
}
, 내가 전달 된 Model
의 속성을 반환하는 방법을 갖고 싶어 (분명이 바보 같은 방법이지만, 포인트를 가로 지른다). 내가
public class DerivedModel : Model
{
public string Prop2 { get; set; }
}
을 가질 수
public static class Extensions
{
public static U Property<T, U>(this T model, Expression<Func<T, U>> property) where T : Model
{
return property.Compile().Invoke(model);
}
}
이 방법과는 Model
클래스의 일부가되어야처럼이 방법은 같다
var myString = new DerivedModel().Property(a => a.Prop2);
할 : 나는 그것을 확장 방법으로 작동 할 수 있습니다 다음과 같이 보입니다.
public T Property<T>(Expression<Func<ThisDerivedInstanceOfModel, T>> property)
{
return property.Compile().Invoke(this);
}
이므로 Property()
에 대한 동일한 호출이 확장 메서드가 Model
의 인스턴스에서 실행할 수 있습니다.
이것은 기괴한 일이며 C#의 기능이 아니며 workaround 확장 메서드가 완벽하게 작동한다는 것을 알았지 만 가능하다면이 메서드를 가능한 한 인스턴스 메서드로 만드는 것을 선호합니다. ' 나에게.
어쨌든이 질문에 대한 첫 번째 대답은 Jon Skeet이 "아니오"라고 말했을 것이다. 고마워! – eouw0o83hf