내 UT에서 일부 코드 경로를 확인해야 할 때이 문제가 발생합니다.일반 형식으로 익명 형식의 일반 형식 인스턴스, 원래 형식으로 제대로 변환하는 방법?
데이터 필드가 올바르게 설정되었는지 확인하려면 원래 유형으로 다시 변환해야합니다.
나는 추상 클래스가 정의하고 내 UT는
public interface ITestInterface { };
public class TestClass<T> : ITestInterface
{
public T member { get; set; }
}
public static class Util
{
public static ITestInterface Create<C>(C t)
{
return new TestClass<C> { member = t };
}
public static ITestInterface CreateInstance()
{
return Create(new
{
p1 = 100,
p2 = "string"
});
}
}
class Program
{
static void Main(string[] args)
{
var a = Util.CreateInstance();
var b = a as TestClass<Object>;
// this will be "null" in this example
// So, how can I convert back to its real type?
// And get the "member" data
}
}
내가이 예는 정확히 내 질문 제가
더 많은 환자에 대한주십시오 원하는을 설명 할 수 있다고 생각이 예를 들어 주요 기능에 지금 : 당신은 익명 형식을 사용하는 이유
- 는
- 은 왜 인터페이스 를 사용 : 사용 템플릿 클래스는 제네릭이 아닌 인터페이스
나는 코드가 이미 말씀을 전에서 파생 왜
는 내가하고 싶은 것은 (적어도 현재) 변경할 수 없습니다
- 확인하는 인터페이스가 있으면, I는 회원 정보를 확인할 수 있고, 그 형태로 다시 변환 할 필요
ITestInterface
- 로부터 파생 된 클래스의 인스턴스 인 경우
이 시나리오를 기반으로 몇 가지 솔루션/아이디어를 공유하십시오. BTW
물론
내가 유형으로 다시 변환 할 마지막 성명에서 "개체"를 사용하고 알고 좋은 (또는 분명히 잘못)이 아니라 사실 내가 모르는 다른 어떤 것들 I 여기에 넣을 수 있습니다. "객체"는 직관적 인 시도입니다. 이 사건을 처리 할 수있는 자산 방법을 알려주십시오 (어쩌면 "객체"를 대체하기 위해 사용 된 것 이상).
내가 여기 이해하지 못하는 뭔가가있다. 왜'a'를'TestClass
'Util.Create'에 의해 반환 된'TestClass' 인스턴스의'p1' 속성을 검색하는 것이 목표입니까? –
제 사건은 간단합니다. 이것은 유타에서 코드를 확인하는 데 사용됩니다. 따라서 해당 인터페이스의 데이터를 다시 가져와야합니다. – winterTTr