1


当我尝试保存在数据库属性中时,Emit mapper 出现了一些问题。
首先我映射了这个类(它工作得很好):

[Serializable]
public class ProfileProperty 
{
    public string PropertyValue { get; set; }

    public bool IsVisible { get; set; }

    public ProfileProperty(string value, bool isVisible = true)
    {
        this.PropertyValue = value;
        this.IsVisible = isVisible;
    }

    public ProfileProperty()
    {
        this.IsVisible = true;
    }
}

我在这里映射:

var mapper = ObjectMapperManager.DefaultInstance.GetMapper<PollmericaProfile, ProfileModel>();
ProfileModel prof = new ProfileModel();
if (x.User != null)
{
    prof = mapper.Map(x);
}

但有些要求不需要string属性。这就是为什么我决定写这个:

[Serializable]
public class ProfileProperty 
{
    public object PropertyValue { get; set; }

    public bool IsVisible { get; set; }

    public ProfileProperty(object value, bool isVisible = true)
    {
        this.PropertyValue = value;
        this.IsVisible = isVisible;
    }

    public ProfileProperty()
    {
        this.IsVisible = true;
    }

    public T GetValue<T>()
    {
        return (T)this.PropertyValue;
    }
}

并且所有映射都不起作用=(
如果你可以,请帮助我。如果你愿意,我可以提供必要的信息

。PS说实话,我想转移到一个字符串并返回,所以至少可以工作

UPD:我试过没有方法public T GetValue<T>()......它有效......

4

1 回答 1

1

对此感到抱歉,但我很快就找到了答案。
在映射中,我必须这样写:

var mapper = ObjectMapperManager
               .DefaultInstance
               .GetMapper<PollmericaProfile, ProfileModel>( new DefaultMapConfig()
               .IgnoreMembers<PollmericaProfile, ProfileModel>(new string[] { "GetValue" }));
ProfileModel prof = new ProfileModel();
if (x.User != null)
{
    prof = mapper.Map(x);
}
于 2012-06-22T15:21:02.247 回答