2017-01-27 10 views
2

私は次のことを行うのが煩雑ではないと思います。C#プロパティをSQL Serverデータベースに格納してコマンドを呼び出す方法は?

"DateTime.Now.Year"のようなC#プロパティを格納するVARCHARデータベースフィールドがあります。この値をASP.NETアプリケーションに渡し、2017を動的に返したいと思います。

VARCHAR値を文字列として読み込み、プロパティを呼び出すC#メソッドを取得するにはどうすればよいですか?

+0

DBフィールドにC#のプロパティ名を文字列値として格納し、それを現在の年を取得するためにクエリで呼び出すことを意味しますか? 'Microsoft.CSharp.CSharpCodeProvider'とリフレクション手法を使ってクエリ結果をコードとして実行することができます(http://stackoverflow.com/questions/4800267/how-to-execute-code-that-is-in-a-string) 。 –

+0

私はこのような状況でCSスクリプトを使用しました:一般的にうまく動作するwww.csscript.net –

答えて

1

これはSystem.Reflectionを使用して実現できますが、実際に呼び出すアセンブリ、クラス、プロパティ/フィールド/メソッドに関する情報を格納する必要があります。

for example if you stored: 
AssemblyPath: "c:\something\someassembly.dll" 
ClassFullPath: "SomeAssembly.SomeNameSpace.SomeClass, SomeClass" 
MethodName: "someMethodName" 

次に、あなたのコードでは、アセンブリをロードし、クラスをインスタンス化しようとする可能性があり:

var assembly = Assembly.Load(assemblyPath); 
var clss = Activator.CreateInstance(ClassFullPath); 
var method = clss.GetType().GetMethod(MethodName); 
var result = method.Invoke(); 

は、今では超単純化した例であり、メソッドへのアクセスのような考慮すべき多くのものがあります/プロパティ/フィールドなど(つまりプライベートvsパブリック..静的vsインスタンス)

あなたのケースを本当に減らして、テーブルに保存できるフラグ/オプションのセットを設計できれば可能です。

関連する問題