面白い発掘をしました。プロキシ名の指定は、INamingScope を使用して可能であるように見えますが、INamingScope を組み込むのは簡単ではありません。独自の ProxyFactoryFactory を作成する必要があります。これにより、NHibernate.ByteCode.Castle.ProxyFactory と同じ 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 のソース コードを掘り下げるだけです。うまくいけば、それはあなたにいくつかのアイデアを与える...