問題タブ [extension-methods]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - このc#拡張メソッドの定義をWHEREキーワードで制限できますか?
私は次の拡張メソッドを実行しようとしています->列挙型を提供するときにintを列挙型に変換します:-
さて、タイプTのみを列挙型として定義できるようにしたいと思っていました。制限できるものはありますか?
例えば。
c# - C# 拡張メソッド - どこまでが遠すぎますか?
3.days.from_now
Railsは、3 日先の日付を期待するように、戻り値のように Ruby にいくつかのコア拡張機能を導入しました。C# の拡張メソッドを使用して、同様のことができるようになりました。
またはどうですか:
これは根本的に間違っているのでしょうか、それとも、Rails のようなフレームワークのように、それが良い考えである場合もありますか?
asp.net - データバインドされたコントロールで Eval を使用して拡張メソッドを呼び出す方法
私は int 型に単純な拡張メソッドを持っているので、次のことができます:
これはコードではうまく機能しますが、リピーター テンプレートでこの拡張メソッドを使用したいと考えています。データバインドするときは、次のことを行います。
それはうまくいかなかったので、私は試しました:
それでもうまくいきませんでした。JIT コンパイラは拡張メソッドを認識していませんが、ページには適切なインポート ステートメントがあります。
これを解決するための私の唯一のアイデアは、Eval を Literal コントロールに置き換えて、コード ビハインドで拡張メソッドを呼び出すことですが、いずれにせよ、これが機能しない理由を知りたいと思います。
ありがとう
c# - 別のアセンブリで制約付きジェネリック拡張メソッドを使用すると参照エラーが発生する
共通の拡張メソッドを含む別のアセンブリを作成しました。拡張メソッドはSystem.Web.dll
(およびその他) のクラスを使用します。
次に、拡張メソッドを含むアセンブリを参照する新しいプロジェクト (コンソール アプリケーション) を作成するときに、アセンブリ内のクラスを拡張する拡張メソッドを使用しない場合は、新しいプロジェクトへUtilities.dll
の参照を追加する必要はありません(たとえば)。System.Web.dll
System.Web.dll
System.Web.UI.Control
拡張メソッドの 1 つがジェネリック メソッドになる場合、すべてが期待どおりに機能し続けます。しかし、アセンブリ内のクラスに制約するジェネリック メソッドに制約を追加するとすぐにSystem.Web.dll
、コンパイラはSystem.Web.dll
、新しいプロジェクトがまだそのアセンブリ内で何も使用していない場合でも、新しいプロジェクト (コンソール アプリケーション) への参照が必要であると不平を言います。 .
言い換えれば、ジェネリックメソッドに制約がない限り、すべてがコンパイルされますが、制約を追加するとすぐにコンパイラが文句を言います。
私の拡張メソッド アセンブルの例 (ライブラリとしてコンパイル)Utilities.dll
):
And here is a new console application that won't compile (unless I also add a reference to System.Web.dll
):
Update:
As Marc pointed out (below) puting the offending method in a separate namespace fixes the problem.
上のディレクティブ。But the question still remains why is the constraint a problem while the type Control
was already used as a parameter to the method. and why is the namespace the solution when I already use the using
c#-3.0 - 配列フラグメントを返す
配列から配列フラグメントを取得する必要があります。Array.Copy() の使用にうんざりしています。new ArraySegment(..).Array は元の [完全な] 配列を返します。以下は私が思いついたものですが、かなり不自由だと思います。これを行うより良い方法はありますか?
前もって感謝します。
更新: 上記は単なる例です。
私はメソッドを持っています: byte [] CalculateXXX(byte [] key, byte [] message); このメソッド内で配列操作を行います。配列の一部を返したい。ArraySegment は IEnumerable を実装せず、セグメント new ArraySegment(arr...) だけを含む配列を返しません。Array は完全な元の配列を返します。
var rval = new byte[4];
//new ArraySegment(finalOutputBuffer, 0, 4).SegmentedArray();
Array.Copy(finalOutputBuffer, 0, rval, 0, 4);
配列フラグメントを返すために上記のことをしなければならなかったことがわかりました。[新しい配列として]配列のフラグメントを返すより良い方法があるかどうか疑問に思っていました。
c# - いくつかの基準によって、コレクションから最大のアイテムを選択します
私は.net 3.5が初めてです。私はアイテムのコレクションを持っています:
どこ
名前の長さが最も長い要素を取得したいと思います。私は試した
もちろん、最大長を返します(Model
オブジェクトが必要です)。拡張メソッドを使用してこれを行う方法があることは知っていますが、その方法はわかりません。
.net - 拡張メソッドの使用
これらの質問は、拡張メソッドについて以前に尋ねた質問のフォローアップです。
.net - 拡張メソッドを適切に文書化する方法
そのため、一般的に使用されるものに対していくつかの拡張メソッドがあり、それらを文書化する際に、XML コメントでタグを一貫して記述する方法がわからないことに気づきました。summary
例えば:
対。
this
したがって、問題は、その厄介なパラメーターを一貫して参照する方法がわからないことのようです。さらに、これが拡張メソッドであることを明確に示す方法がわかりません (Sandcastle やその他のツールがまだそれらに追いついており、ドキュメントに自動的に注釈を付けて表示できるかどうかわからないため)。後ですべてのマニュアル ドキュメントを削除する必要はありません。
問題は、拡張メソッドを文書化するためのガイダンスは何かということです。正式なガイダンスがない場合、皆さんはどのように対処しますか? 投票していない場合は、何かに投票して、私が何かを続けることができますか? 強迫観念的なコントロールフリークとして、この矛盾は私を怒らせています.
asp.net - MVC ベータ版の <%=Html.RadioButtonList()%> 拡張機能はどこにありますか?
コア MVC ベータ版にラジオボタン リスト ヘルパーがない理由はありますか? ドロップダウンリストはありますが、ラジオボタンリストはありません。
確かにこれを行うための拡張メソッドを簡単に作成できることはわかっていますが、これはコアなことですか?