プロパティをカスタムデータ型にマップしたいNHibernateのクラスがあります。
NHibernate クラスは次のようになります。
namespace Example1.Models
{
public class Calendar
{
public virtual int ID { get; set; }
public virtual string Workspace { get; set; }
}
}
マッピングファイルを使用
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="Example1.Models.Calendar, Example1" lazy="true" table="Calendar">
<id name="ID">
<generator class="native" />
</id>
<property name="Workspace" />
</class>
</hibernate-mapping>
Workspace プロパティに入ってくるワークスペースは次のようになります
http://site/Morning%20meeting?InstanceID=1, Morning meeting
Uri クラスを使用してこれを URL としてマップできますが、場合によっては、タイトルを文字列と共に出荷する必要があります。
public class Calendar
{
public virtual int ID { get; set; }
private Uri _workspace;
public virtual Uri Workspace
{
get { return _workspace; }
set
{
if (value != null)
{
var workspace = value.ToString().Split(new[] { ',' });
_workspace = new Uri(workspace[0]);
}
}
}
}
カスタムクラスを作成して、ワークスペースタイプをそのクラスにsedしようとしました。例
private Workspace _workspace;
public virtual Workspace Workspace
{
get { return _workspace; }
set { _workspace = new Workspace(value.ToString()); }
}
...
public class Workspace
{
public Uri Uri { get; set; }
public string Title { get; set; }
public Workspace(string workspace)
{
if(string.IsNullOrEmpty(workspace))
return;
var workspaceArray = workspace.Split(new[] { ',' });
if (workspaceArray.Length > 0)
Uri = new Uri(workspaceArray[0]);
if (workspaceArray.Length > 1)
Title = workspaceArray[1];
}
}
これにより、エラーが表示されます
Could not determine type for:Example1.Models.Workspace, Example1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, for columns: NHibernate.Mapping.Column(Workspace)
この種のカスタマイズを実装するには、どのような方法が推奨されますか?
ありがとう