部分クラスと.NET環境は、我々が望むように私たちはそれらを拡張することができますよう、Entity Frameworkのプラットフォームは、モデルからすべてのオブジェクトを生成:
同じ名前空間で私たちの部分に座ることをチェックすることを忘れないでください(モデルディレクトリや独自のディレクトリにVisual Studioを作成すると、追加の名前空間が作成されます)。
public partial class ErrorLog
{
public long pk { get; set; }
public int lineNumber { get; set; }
public Nullable<int> error { get; set; }
}
当社の部分:属性について
public partial class ErrorLog
{
public string getErrorDescription()
{
return d[(int)error];
}
private static Dictionary<int, string> d = new Dictionary<int, string>()
{
{1,"desc1" },
{2,"desc2" },
{3,"desc3" },
{4,"desc4" }
};
}
:
我々は
public interface IErrorLogsMetaData
{
[Display(Name = "Id")]
long pk { get; set; }
[Display(Name = "The line Number")]
int lineNumber { get; set; }
[Display(Name = "The Error")]
Nullable<int> error { get; set; }
}
は、私たちのエンティティ(でも拡張)オブジェクト上でそれらを実装する新しいインターフェースを追加することができます。私たちが反映し、使用してのglobal.asaxでそれを予約する必要があることについては :
TypeDescriptor.AddProviderTransparent(
new AssociatedMetadataTypeTypeDescriptionProvider(typeof(ErrorLog), typeof(IErrorLogsMetaData)), typeof(ErrorLog));
TypeDescriptor - 私たちのためにおなじみの反射から、その種類についての情報を取得します。 AddProviderTransparent - 部分的に信頼できるコードから呼び出され、関連付けられたクラスからメタデータを取得するメソッドです。
最初のパラメータはプロバイダーで、飾りたい型からのTypeDescriptionProviderと帰属インタフェースです.2番目のパラメータは、解説のターゲット型です。あなたが見ることができるようにあなたがあなた自身のパーシャルクラスを作成できるように
この件については既に説明していますが、+1がそれに該当します。それを行うのは唯一の方法ではないことに注意してください – risa