だから私はこのような何かをやってと思っています。
Shall() - Not quite sure about this one yet
.Test(...) - Determines whether the contained logic executed without any errors
.Guard(...) - Guards the contained logic from throwing any exception
.Assert(...) - Asserts before the execution of the code
.Throw(...) - Throws an exception based on a certain condition
.Assume(...) - Similar to assert but calls to Contract.Assume
使用法:。father.Shall()ガード(F => f.Shop())
事は、私は、実行時にこれらの余分な呼び出しをしたくないということであると私はAOPを知っています私のためにこれを解決することができます、私はあなたがそれを行うより良い方法を持っている場合は、発信者に直接これらの呼び出しをインラインしたいと思います。
さて、私は研究か何かをやって前に私は、誰かがすでにそのやったり、それをやっているツールを知っているだろうか?
私はそれは時間と頭痛の多くを救うことができると思いますので、私は本当にそのようなものを構築し、国民にそれを解放します。
いくつかの例。
DbSet<TEntity> set = Set<TEntity>();
if (set != null)
{
if (Contains(entity))
{
set.Remove(entity);
}
else
{
set.Attach(entity);
set.Remove(entity);
}
}
次のように変更されました。代わりに、面白いものと私は受け入れるだろうことを、あなたはあなたの経験を共有し、それについてとても良いか悪いものを私に伝えることができ、他の人の楽しみは、一部の人は本当に成熟度について何かを学ぶことができるようにしようの
Set<TEntity>().Shall().Guard(set =>
{
if (Contains(entity))
{
set.Remove(entity);
}
else
{
set.Attach(entity);
set.Remove(entity);
}
});
。
私はコード契約を再作成しようとしていません、私はそれが毎日それを使用していることを知っています、私は1つの場所に書き込まれた定型句コードを移動しようとしています。
時には、呼び出しごとに返されたオブジェクトをチェックする必要があり、コードではないため、呼び出し元がnullにならないようにすることができないため、呼び出し側でnullチェックを実行する必要があります返されたオブジェクトには、コールを連鎖させるときにこれらのチェックを簡単に実行できるようになると考えました。
更新:私はもう少し考えて、意図を明確にしてコードを読みやすくするためにAPIを変更しなければならないでしょう。
私は考えは全く磨かないが、実際に私はすべてのこれらの方法にすぎ行ったことと思います。
とにかく、私は今のためにそれを残しておきます。
コード契約よりも何を得ようとしているのかよく分かりません。 – CodesInChaos
Pray()メソッドを追加するのを忘れています。誰かがあなたのコードを読んで楽しむことを期待しないでください。 –
'Shall'、' Test'と 'Guard'はかなり無意味に見えます。 – CodesInChaos