我只是快速阅读了这篇文章(特别是关于他选择使用结构/字段而不是类/属性的原因)并看到了这一行:
属性的结果不是真正的l值,因此我们不能执行类似Vertex.Normal.dx = 0的操作.属性的链接会产生非常意外的结果.
他在谈论什么样的意外结果?
我正在尝试将新的重载构造函数添加到现有类型.我尝试使用emit命名空间来完成它,但是创建的类型不会继承基类和所有其他方法.
在阅读了一些文章之后,我决定用.net框架内置类来实现它.
所以我得到了Mono.Cecil,但是找不到任何体面的例子来实现这个目标.
我遇到过一个复制方法的样本,但不是道具,字段等.
这是我Package班级的定义:
type Package ([<ParamArray>] info : Object[]) =
do
info |> Array.iter (Console.WriteLine)
member this.Count = info.Length
Run Code Online (Sandbox Code Playgroud)
这是IL,我正在尝试:
let ilGen = methodbuild.GetILGenerator()
ilGen.Emit(OpCodes.Ldstr, "This is 1")
ilGen.Emit(OpCodes.Ldstr, "Two")
ilGen.Emit(OpCodes.Ldstr, "Three")
ilGen.Emit(OpCodes.Newobj, typeof<Package>.GetConstructor([|typeof<Object[]>|]))
ilGen.Emit(OpCodes.Ret)
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.我试过了:
ilGen.Emit(OpCodes.Newobj, typeof<Package>.GetConstructor([|typeof<String>; typeof<String>; typeof<String>|]))
Run Code Online (Sandbox Code Playgroud)
以及:
ilGen.Emit(OpCodes.Newobj, typeof<Package>.GetConstructor([|typeof<Object>; typeof<Object>; typeof<Object>|]))
Run Code Online (Sandbox Code Playgroud)
但它只是嘲笑我.我究竟做错了什么?
我有一个清单:
private readonly IList<IList<GameObjectController>> removeTargets;
private readonly IList<IList<GameObjectController>> addTargets;
Run Code Online (Sandbox Code Playgroud)
PickUp继承自GameObjectController.但是,当我尝试这个:
public IList<PickUp> Inventory
// ...
gameObjectManager.MoveFromListToWorld(this, user.Model.Inventory);
// ...
// This queues everything up to be removed, until ProcessMoves...() is called
public void MoveFromWorldToList(GameObjectController removedFromWorld, IList<GameObjectController> addTarget)
{
toBeRemoved.Add(removedFromWorld);
addTargets.Add(addTarget);
}
// ...
/// <summary>
/// Removes all the GameObjects on which removal is requested from the world.
/// </summary>
public void ProcessMovesFromListToWorld()
{
for (int i = 0; i < toBeAdded.Count; i++)
{
GameObjectController moved = …Run Code Online (Sandbox Code Playgroud) 我在http://www.tryfsharp.org上的交互式窗口中收到此错误.它在视觉工作室工作正常,我不知道如何解决它.任何帮助将不胜感激
let randomNumberGenerator count =
let rnd = System.Random()
List.init count (fun numList -> rnd.Next(0, 100))
let rec sortFunction = function
| [] -> []
| l -> let minNum = List.min l in
let rest = List.filter (fun i -> i <> minNum) l in
let sortedList = sortFunction rest in
minNum :: sortedList
let List = randomNumberGenerator 10
let sortList = sortFunction List
printfn "Randomly Generated numbers in a NON-SORTED LIST\n"
printfn "%A" List
printfn "\nSORTED …Run Code Online (Sandbox Code Playgroud) c# ×2
f# ×2
reflection ×2
.net ×1
cil ×1
generics ×1
mono.cecil ×1
properties ×1
semantics ×1
struct ×1
value-type ×1