Activator.CreateInstance 메서드를 살펴보십시오. 지정된 매개 변수와 가장 일치하는 생성자를 사용하여 지정된 유형의 인스턴스를 만듭니다.
ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
Person p = (Person) handle.Unwrap();
p.Name = "Samuel";
Console.WriteLine(p);
: 그것의 예는 귀하의 경우 사용하면 당신은 다음과 같은 것을 사용하여 객체 인스턴스를 만들 수
public class Person
{
private string _name;
public Person() { }
public Person(string name)
{
this._name = name;
}
public string Name
{
get { return this._name; }
set { this._name = value; }
}
}
다음과 같은 클래스가 있다면 그래서
Activator.CreateInstance("myAssemblyName", "myType")
것입니다 "사무엘"이 인쇄됩니다. 귀하의 경우 각각 KeyValuePair
에 대해 위의 방법을 사용하여 관련 객체를 인스턴스화 할 수 있습니다.
이 정보가 도움이되기를 바랍니다.
편집. 추가 질문에 답변하십시오.
Dictionary<String, String> someDict = new Dictionary<String, String>();
someDict = GetDictOfKvpFromCsv(); // Get the dictionary from your CSV.
foreach (KeyValuePair<String, String> kvp in someDict)
{
ObjectHandle handle = Activator.CreateInstance(kvp.Key, kvp.Value);
ISomeType t = (ISomeType)handle.Unwrap();
// Do other stuff...
}
CSV 값이 문자열 유형이라고 가정 할 수 있습니다. CSV 값 자체를 인코딩하지 않고 원하는 유형별로 다르게 파싱하지 않는 한 원하는 것은 불가능합니다. XML을 사용하십시오. – MoonKnight
속성 이름을 키 이름과 매핑 할 수 있습니까? –
나는 당신이 지금 말하고있는 것을 보았습니다, 미안 해요. 예, 할 수 있습니다. 잠깐만 기다려 봐. 도와 줘. – MoonKnight