C#, C♯, C#相談室 Part98 (518レス)
上下前次1-新
284: (ワッチョイ b310-3P54) 2024/12/22(日)09:27 ID:I7bhR46i0(2/2) AAS
俺はずっと>>274の前者でインデントはタブだなぁ
なおタブの幅はスペース4個分
285(1): (ワッチョイ 7b8b-vY+B) 2024/12/22(日)11:59 ID:US35TJKc0(1/3) AAS
「自転車置き場の屋根の色」現象発生中
286: (スッップ Sdaf-3P54) 2024/12/22(日)13:03 ID:ci/BAnbad(1) AAS
この手の話は職場のルールで決まるから個人がどうこうは関係ないよな
ただ自分のツールなんかは好きにしろだが
カッコ、演算子、型と変数の宣言の間の空白などもめる話題はいくらでもある
287(1): (ワッチョイ 195d-PrDn) 2024/12/22(日)16:36 ID:J7cuP3Nu0(1) AAS
>>285
「原子力発電所の建設」について議論したいなら付き合うよ、それで議題は?
288: (ワッチョイ 957c-Th9R) 2024/12/22(日)17:09 ID:dFQQq0VB0(4/4) AAS
まあreshaperでテーム共有設定使うだけだしな
289(1): (ワッチョイ 7b8b-vY+B) 2024/12/22(日)19:48 ID:US35TJKc0(2/3) AAS
>>287
では失礼して
Unity製ゲームのMOD開発なんかでリフレクション使いまくるのもなんかスマートじゃないから、
aelij氏のIgnoresAccessChecksToGeneratorを魔改造させてもらってフィールド含めて全パブリック&readonly解除でゲームのコードに全アクセス出来るようになってめっちゃ捗るようになったのだけど、
欲が出て標準ライブラリにも手を出したくなってやってみたらmscorlibなんかはReferenceAssemblyだからプライベートフィールドはそもそもdll内に含まれてないから書き換えられないんだよね。
ランタイム時の実体dllを決め打って渡せばstring.m_firstCharとかList<T>._sizeとかも全てアクセスできるようにはなるんだけど決め打ち渡しもスマートじゃないからどうにか自動で解決をしたい。
ILSpyやmono.cecilにはランタイム時の実体dllを特定するコードあるんだけどbuildアクションから同じ事するのって可能だろうか?
290: (ワッチョイ e376-ZNoy) 2024/12/22(日)19:55 ID:zKZ5mRgv0(1) AAS
はい
291: (ワッチョイ 7b8b-vY+B) 2024/12/22(日)20:10 ID:US35TJKc0(3/3) AAS
へー
なんだかもうゲームよりMOD開発、MOD開発より開発環境開発の方が長くなっちゃってますわ
292: (ワッチョイ 832b-8NiF) 2024/12/22(日)20:35 ID:96LlHbpn0(4/4) AAS
だって、ここ
別にゲーム開発やないし
プログラムやで
293(1): (ワントンキン MM33-MooF) 2024/12/22(日)20:50 ID:F7NwxYJ7M(1) AAS
いまだにmonoで簡単にいじられまくりゲームあるのか
294: (ワッチョイ 0364-PrDn) 2024/12/23(月)00:10 ID:XKMn6iMr0(1/2) AAS
>>289
日本語がややこしいけど
①標準ライブラリのPrivate含む全フィールドにリフレクションを使わずにアクセスして書き換えたりしたい
んで、
②実体DLLを決め打ちで渡せばアクセスできるってところまでできてる
あとは
③実体DLL取得を自動化したい
④なおかつビルドプロセスに組み込みたい
ってことか
MOD開発とか知らんけど面白そうじゃん
295(1): (ワッチョイ 0364-PrDn) 2024/12/23(月)00:36 ID:XKMn6iMr0(2/2) AAS
いまいち細かい要件がよくわからんけどAppDomain.CurrentDomain.GetAssemblies()で現在ロードされているすべてのアセンブリが取得できるらしいが、これ試した?
駄目だったならどういうところがダメだったのか教えてくれ
296: (ワッチョイ 7b8b-vY+B) 2024/12/23(月)17:33 ID:HWay8A+S0(1/2) AAS
>>295
要するにIgnoresAccessChecksToGeneratorの話でMSBuild内のコードとして動くものだからそれやってもMSBuildがロードしてるものが返されるだけとなる
ILSpyなんかもtypeof(object)などから解決してるので上記の理屈でそのまま移植はできない
297: (ワッチョイ 7b8b-vY+B) 2024/12/23(月)17:42 ID:HWay8A+S0(2/2) AAS
>>293
マルチメインじゃなくmodフレンドリーなゲームならil2cpp化せずそのまま出してるゲームも普通に多いよ
改変やチート防止のためなら難読化含めてやったところでそこまで難易度上がらないからそれ目的ならRustみたいにカーネルドライバ付けるしかない
298: (ワッチョイ a374-PrDn) 2024/12/24(火)18:58 ID:9YLK2p020(1) AAS
個人開発の局所的な用途のマイナーツールの話が原発の建設並の重大事なのか
ちょっと難しすぎてわかんねえな
299: (ワッチョイ df79-0Q8V) 2024/12/24(火)19:41 ID:RgkKZ0Pj0(1) AAS
原発ってただの湯沸かし器じゃん
燃料がちょっとヤバイってだけで高尚なC#のプログラムと比較すんなよ
300: (スッップ Sdaf-3P54) 2024/12/25(水)08:00 ID:vP0zyznod(1) AAS
C#だってただの道具
しかもC#だけじゃお湯も沸かせない
高尚とかちゃんちゃらおかしい
301: (ワッチョイ 57ef-FEgH) 2024/12/25(水)08:26 ID:ML8x6ihA0(1) AAS
ツールは手段であって目的はアクセシビリティバイパスだから言語レベルのスケールの話な
実際これ求めてる人は少なくないからUnsafeAccessorが実装された訳で
てかリフレクションの方が文字列で指定してる分よっぽど危険だと思うんだけどな
302: (ワッチョイ df79-0Q8V) 2024/12/25(水)21:07 ID:G9TljzDw0(1) AAS
エロがビデオを進化させてきようにチートがソフトウェアを進化させるんだよ
湯沸かししかできない原発野郎は難しいなら黙ってろ
303: (ワッチョイ 5761-PrDn) 2024/12/25(水)21:35 ID:7oEpQVAc0(1) AAS
煽りたいだけのやつが居着いちゃってるのか、このスレ
304: (ワッチョイ b310-3P54) 2024/12/25(水)21:39 ID:WXVFxdaX0(1) AAS
いつものことだよあぼーんしときな
305: (ワッチョイ 832b-8NiF) 2024/12/25(水)21:44 ID:WWJbrOfz0(1) AAS
だぁ~から
ドーンおじはコテ付けろや
306: (ワッチョイ 3ec0-m72+) 01/01(水)16:01 ID:nGCOTvnw0(1/3) AAS
Enum.IsDefined(enumType, intValue)ってボックス化する?
AIに聞いたら最初は「ボックス化しない」とか言われたんだけど、第2引数がobject型として受け取ることを指摘したら「ボックス化するかもしれません」みたいな曖昧な返答されてよく分からなくなってきた
307: (ワッチョイ 9a8b-tkBd) 01/01(水)16:03 ID:zfs+VkVC0(1) AAS
object型ならするよ
.NETのバージョンにもよるけどgeneric版の方が型がコンパイル時解決されるからパフォーマンスは良い
308: (ワッチョイ 3ec0-m72+) 01/01(水)16:07 ID:nGCOTvnw0(2/3) AAS
だよね ありがとう
309: (ワッチョイ 3ec0-m72+) 01/01(水)16:23 ID:nGCOTvnw0(3/3) AAS
確かにジェネリクスでstruct制約付けたらボックス化回避できそう
ありがとう
public TEnum ConvertToEnum<TStruct, TEnum>(TStruct value)
where TStruct : struct
where TEnum : Enum
{
if (!Enum.IsDefined(typeof(TEnum), value))
throw new ArgumentException();
return Unsafe.As<TStruct, TEnum>(ref value);
}
310: (ワッチョイ 63eb-UqtM) 01/01(水)22:57 ID:tBHA6FMH0(1) AAS
JetbrainsやILSpyでIL見てboxあるかどうかみればいいんじゃね
311: (ワッチョイ 9a8b-IJXt) 01/31(金)11:32 ID:jXb+sjQI0(1/4) AAS
ハック的なことなんだけどインスタンスのオブジェクトヘッダに埋め込まれるクラスハンドルへのポインタ?をインスタンス無しで得る方法って無いかな
typeof(MyClass)ってすると正にそのポインタが「mov rcx, 7FFB716DE758 -> call clrのtype取得関数」って感じのアセンブラが生成される訳だけど、その7FFB716DE758を得たいんだよね
インスタンスがあればUnsafeライブラリ用いて簡単に得られるのだけど
312: (ワッチョイ 9a8b-IJXt) 01/31(金)11:34 ID:jXb+sjQI0(2/4) AAS
文章修正してたら日本語おかしくなったけどもし知ってる方いたらヒントでも何でも教えていただきたい
313(1): (ワッチョイ 9714-natb) 01/31(金)12:00 ID:ejyfLYzx0(1) AAS
GetTypeで得られるものとは違うわけ?
上下前次1-新書関写板覧索設栞歴
あと 205 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.014s