2016-08-04 15 views
2

C#で開発されたWeb APIにServiceStackを使用します。私は、Webサービスの開始時にデータメンバーの必須属性を変更したいと考えています。 ServiceStack:サービス起動時にAPIモデルのメンバ属性を変更する方法は?

は、現在必要な属性は、コンパイル時にそのように定義されています

[ApiMember(IsRequired=true)] 
public string MyAttribute { get; set; } 

私はAppHost.Configureを実行するときに「動的」にその値を定義したいと思います。

ServiceStackでこれを実現する方法はありますか?同様に、Fluent APIを使用してルートを定義します(例:Routes.Add<HOPFlight>("/flight", "POST");)。

私はAppHostコンストラクタでそれを行うことを示唆する答えDynamically adding attributes in ServiceStackを読んだが、それを行う方法は?

答えて

3

あなたがリンクした質問は、元の質問の例です。 AppHostのConfigure機能でこれを追加しようとすると、おそらく遅すぎることに注意してください。 AppHostのコンストラクタに追加する必要があります。あなたのリンク質問から、mythzは、動的サービスは、あなたが AppHost.Configure()彼らはすでに時間 設定(によって初期化されているので)実行される前にそれらを追加する必要がある属性を追加するために

を言うので、彼らはする必要がありAppHost コンストラクタで追加するか、AppHost.Init()を呼び出す前に追加してください。あなたのケースでは

は、このようなものは、動作するはず

public AppHost(string serviceName, Assembly[] serviceAssemblies) : base(serviceName, serviceAssemblies) 
{ 
    ApiMemberAttribute requiredAttribute = new ApiMemberAttribute { 
     IsRequired = true 
    } 

    Type[] requiredApiMembers = GetTypesToAddApiMemberAttributeTo(); //do whatever you need to get the types you want to add attributes to 
    foreach(requiredApiMember in requiredApiMembers) 
    { 
     requiredApiMember.AddAttributes(requiredAttribute); 
    } 
} 
関連する問題