이 일반적인 방법이 있습니다.
public Guid Save<T>(T obj)
{
Guid newId = Guid.NewGuid();
try
{
foreach (MethodInfo method in (typeof(T)).GetMethods())
{
if (IsXmlElement(method))
{
// A way to get this method's value
// e.g. if T has method GetName, and GetName was assigned 'John'
//i.e. object.GetName = 'John'Is there a way to get 'John' from this GetName method?
}
}
그런 다음 객체가 있습니다 myObject.Name = 'John'
... 그리고 myObject가 save 메소드에 전달되었습니다. Save 메소드 Save(myObject);
내에서 'John'값을 얻을 수있는 방법이 있습니까?
어떤 제안이라도 주시면 감사하겠습니다. 감사.
제네릭 유형을 기반으로 속성을 반복하려면 (예제에서 "메소드"라고 말할 때 속성을 의미한다고 가정합니다) TypeDescriptor
클래스를 사용할 수 있습니다 .
public Guid Save<T>(T obj)
{
Guid newId = Guid.NewGuid();
try
{
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(typeof(T)))
{
if (IsXmlElement(method))
{
object value = property.GetValue(obj);
// ...
}
}
항상 유형을 추론하는 경우 (즉, T
항상 obj
기본 유형이나 인터페이스가 아닌 유형 인 경우) 제네릭이 전혀 필요하지 않습니다.
public Guid Save(object obj)
{
Guid newId = Guid.NewGuid();
try
{
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(obj))
{
if (IsXmlElement(method))
{
object value = property.GetValue(obj);
// ...
}
}
XmlSerializer
수업을 확인하고 싶을 수도 있습니다 . 소스 개체에서 수동으로 XML을 만드는 것 같습니다. XmlSerializer
더 적은 작업으로 필요한 모든 것이 이미있을 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다