구체적인 유형의 일반 목록을 구체적인 유형이 구현하는 인터페이스의 일반 목록으로 캐스팅해야합니다. 이 인터페이스 목록은 객체의 속성이며 리플렉션을 사용하여 값을 할당합니다. 나는 그 가치를 단지 실행 시간에 알았다.리플렉션을 사용할 때 .net 런타임 유형 캐스팅
public void EmployeeTest()
{
IList<Employee> initialStaff = new List<Employee> { new Employee("John Smith"), new Employee("Jane Doe") };
Company testCompany = new Company("Acme Inc");
//testCompany.Staff = initialStaff;
PropertyInfo staffProperty = testCompany.GetType().GetProperty("Staff");
staffProperty.SetValue(testCompany, (staffProperty.PropertyType)initialStaff, null);
}
클래스가과 같이 정의된다 :
public class Company
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private IList<IEmployee> _staff;
public IList<IEmployee> Staff
{
get { return _staff; }
set { _staff = value; }
}
public Company(string name)
{
_name = name;
}
}
public class Employee : IEmployee
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public Employee(string name)
{
_name = name;
}
}
public interface IEmployee
{
string Name { get; set; }
}
어떤 생각 아래는 내가 달성하기 위해 노력하고 있습니다 무엇의 간단한 코드 예제는?
.NET 4.0을 사용 중입니다. 새로운 공변 또는 반동적 기능이 도움이 될까요?
미리 감사드립니다.
목록은 새로운 것이지만 직원은 동일한 이전 개체가됩니다 – SWeko
@SWeko : 당연하지. 더 명확하게 편집 할 것입니다. –
이 문제를 추가로 복잡하게하기 위해 Staff는 IList이므로 인스턴스화 할 수없고 새로운 요소를 추가 할 수 없으므로 원하는 구현을 알아야합니다. – SWeko