У меня есть составной ключевой объект, где одно свойство является целым, а другое - перечислением. Перечисление в настоящее время отображается по строке, но оно должно быть int. У меня есть IUserTypeConvention, который уже делает это, но он не работает для составных ключей.
У меня есть метод Accept (), который правильно находит составные ключи с перечислениями в нем, но я не могу понять код Apply ().
public class CompositeKeyEnumConvention : ICompositeIdentityConvention, ICompositeIdentityConventionAcceptance
{
public void Apply(ICompositeIdentityInstance instance)
{
}
public void Accept(IAcceptanceCriteria<ICompositeIdentityInspector> criteria)
{
criteria.Expect(x => HasEnumKey(x));
}
private bool HasEnumKey(ICompositeIdentityInspector x)
{
if (x.KeyProperties.Count() > 0)
{
foreach (IKeyPropertyInspector inspector in x.KeyProperties)
{
if (inspector.Type.GenericArguments.Count() != 1)
continue;
if (EnumConvention.IsInt32EnumType(inspector.Type.GenericArguments.First()))
return true;
}
}
return false;
}
}
Код действующего соглашения enum:
public void Apply(IPropertyInstance instance)
{
instance.CustomType(instance.Property.PropertyType);
}
Я просто не могу понять, как это сделать для составного ключа.
Спасибо!