вот простой пример, чтобы очистить мои намерения.Настройка свойств из одного класса в другой с помощью GetProperties
class A {
public int Id
public string Name
public string Hash
public C c
}
class B {
public int id
public string name
public C c
}
class C {
public string name
}
var a = new A() { Id = 123, Name = "something", Hash = "somehash" };
var b = new B();
Я хочу, чтобы установить свойства b
«s из a
. Я пробовал что-то, но не повезло.
public void GenericClassMatcher(object firstModel, object secondModel)
{
if (firstModel != null || secondModel != null)
{
var firstModelType = firstModel.GetType();
var secondModelType = secondModel.GetType();
// to view model
foreach (PropertyInfo prop in firstModelType.GetProperties())
{
var firstModelPropName = prop.Name.ElementAt(0).ToString().ToLower(System.Globalization.CultureInfo.InvariantCulture) + prop.Name.Substring(1); // lowercase first letter
if (prop.PropertyType.FullName.EndsWith("Model"))
{
GenericClassMatcher(prop, secondModelType.GetProperty(firstModelPropName));
}
else
{
var firstModelPropValue = prop.GetValue(firstModel, null);
var secondModelProp = secondModelType.GetProperty(firstModelPropName);
if (prop.PropertyType.Name == "Guid")
{
firstModelPropValue = firstModelPropValue.ToString();
}
secondModelProp.SetValue(secondModel, firstModelPropValue, null);
}
}
}
}
Что мне делать?
Необходимо перечислить поля и свойства. ('Type.GetFields()'). Примеры классов, которые вы указали, имеют только поля. –
Я также добавил свойство. –
не связан с основной проблемой, но я думаю, что вы должны заменить это 'if (firstModel! = Null || secondModel! = Null)' by 'if (firstModel! = Null && secondModel! = Null)' –