Я сделал несколько интересных раскопок.Задать имена прокси-серверов представляется возможным с помощью INamingScope, но втиснуть INamingScope далеко не так просто. Вам потребуется создать собственный ProxyFactoryFactory, который будет создавать ProxyFactory, идентичный NHibernate.ByteCode.Castle.ProxyFactory, кромебудет инициализировать ProxyGenerator:
public class CustomProxyFactory : AbstractProxyFactory {
private static readonly ProxyGenerator ProxyGenerator = new ProxyGenerator(new CustomProxyBuilder());
// remainder of code is identical
}
public class CustomProxyBuilder : DefaultProxyBuilder {
public CustomProxyBuilder() : base(new CustomModuleScope()) {}
}
public class CustomModuleScope : ModuleScope {
public CustomModuleScope() : base(false, false, new CustomNamingScope(), DEFAULT_ASSEMBLY_NAME, DEFAULT_FILE_NAME, DEFAULT_ASSEMBLY_NAME, DEFAULT_FILE_NAME) {}
}
public class CustomNamingScope : INamingScope {
public CustomNamingScope() {}
private CustomNamingScope(INamingScope parent) {
ParentScope = parent;
}
public string GetUniqueName(string suggestedName) {
// your naming logic goes here
}
public INamingScope SafeSubScope() {
return new CustomModuleScope(this);
}
public INamingScope ParentScope { get; private set; }
}
Честно говоря, я не пробовал запускать или компилировать ничего из этого.Просто копаться в исходном коде NHibernate и Castle.Core.Надеюсь, это даст вам некоторые идеи ...