我正在尝试构建一个为给定对象分配多个属性的Expression,但是在调用已编译的委托之后,它会继续NullReferenceException在lambda体内抛出一个:
var a = Expression.Parameter(typeof(A), "a");
var b = Expression.Parameter(typeof(B), "b");
var c = Expression.Parameter(typeof(C), "c");
LabelTarget returnTarget = Expression.Label(typeof(A));
GotoExpression returnExpression =
Expression.Return(returnTarget, a, typeof(A));
LabelExpression returnLabel = Expression.Label(
returnTarget, Expression.Constant(null, typeof(A)));
var expression = Expression.Lambda<Func<A, B, C, A>>(
Expression.Block(
typeof(A),
new[] { a, b, c },
Expression.Assign(
Expression.Property(a, typeof(A).GetProperty("B")),
b),
Expression.Assign(
Expression.Property(a, typeof(A).GetProperty("C")),
c),
returnExpression,
returnLabel
),
a, b, c);
Func<A, B, C, A> func = expression.Compile();
// Calling func throws a NullReferenceException
A result = …Run Code Online (Sandbox Code Playgroud) 在我从事的 Unity iOS 项目中,存在“不同语言链接”问题;这是 xcode 4 中的警告,但在 xcode 5 中变成了错误。
/.../Libraries/SomeFile.mm:145:10: Declaration of 'SomeMethod' has a different language linkage
Run Code Online (Sandbox Code Playgroud)
这是文件:
void SomeMethod(const char* _List);
...
extern "C"
{
void SomeMethod(const char* _List)
...
}
Run Code Online (Sandbox Code Playgroud)
我该如何修复它,或者至少(因为它并不是那么重要,并且至少能够构建一些东西会很好),再次发出警告?
我正在使用Unity并使用一个包含C#代码的官方教程,其形式如下所示:
public class P1_ActionController : MonoBehaviour
{
void FixedUpdate()
{
if (move > 0 && !facingRight)
{
Flip();
}
}
void Flip()
{
//blah blah, something unimportant goes here.
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,FixedUpdate()方法如何能够直接调用Flip()方法?我认为只有静态方法可以在没有实例化的情况下使用,但显然Flip()不是静态方法.
此外,在同一代码块中的相关难题是这一行:
rigidbody2D.AddForce(new Vector2(0,jumpForce));
Run Code Online (Sandbox Code Playgroud)
因为在Vector2()方法上调用'new'关键字,究竟是Vector2()实例化了吗?
我正在创建一个脚本,将一个"区域"随机生成到地图中,玩家必须站在该地图中才能生成点.我已经拥有大部分点系统和区域系统,并且当满足每个区域的最大点数时能够杀死区域(并破坏对象).
我现在想在zoneAlive == false时选择一个随机区域.我想我可以使用浮点变量来选择区域ID,然后使用Random.range从X到X中选择一个随机ID.我这样做会产生CS0029错误.
zoneGameHandler.cs(47,25): error CS0029: Cannot implicitly convert type `float' to `UnityEngine.Random'
这是我的代码行:
random = Random.Range(0f, 5f);
print (random);
Run Code Online (Sandbox Code Playgroud)
我知道这可能是一个非常新的错误所以它不应该让任何人头疼看到这个新手问题弹出.
我们在我的应用程序中应用了依赖注入模式,并且每个请求,线程或任务都需要缓存一些组件.我们希望能够启动任务/线程,每个任务/线程都应该使用自己的DbContext.每个HTTP请求也需要它自己的DbContext.
我们如何配置和实现此行为?我接受任何常见IoC容器的示例.
c# asp.net-mvc multithreading dependency-injection ioc-container
我在为 Unity 构建运行 Google CardBoard SDK 时遇到了问题。
有人能解决吗?
我用了:
设备:Lg - p925(安卓 4.04)
Unity Edit 中的控制台显示:
无法在清单中找到统一活动。您需要确保将方向属性手动设置为横向。UnityEditor.HostView:OnGUI()
安装失败并显示以下输出:pkg: /data/local/tmp/Package.apk
失败 [INSTALL_FAILED_OLDER_SDK]
rm 失败 -f,没有那个文件或目录
2127 KB/s(4.311s 中为 9391146 字节)
UnityEditor.HostView:OnGUI()
请!
由于某种原因,我所拥有的代码不起作用,它会出现调试错误"赋值的左手必须是变量,属性或索引器",这是什么意思?任何帮助都将是非常棒的谢谢!
void Update ()
{
GameObject.FindGameObjectWithTag ("player");
if (GameObject.FindWithTag ("player") = false)
{
restart1();
}
}
Run Code Online (Sandbox Code Playgroud) 我们正在开发一个Mvc应用程序,我们希望使用nInject来使用依赖注入.目前我们正在维护不同类库"ShopEntities"中的实体,而在我们的mvc应用程序中,我们正在使用这些实体.让我们考虑ShopEntities中的一个类.
namespace ShopEntities
{
public class Customers
{
public int custId {get;set;}
public string custName {get;set;}
public string Address {get;set;}
public string ShippingAddress {get;set;}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我们想在我们的mvc应用程序中使用它时,我们创建一个实例并设置如下所示的属性,
public ActionResult Index()
{
ShopEntities.Customers cust = new ShopEntities.Customers();
cust.CustName = "Sam";
cust.IAddress = "xyz";
cust.ShippingAddress = "xyz xyx xyz";
}
Run Code Online (Sandbox Code Playgroud)
如何在这里使用nInject来避免依赖?此外,我们不希望创建接口,因为这在范围上是有限的.提前致谢.
我是编写 C# Api 的新手,正在查看 IdentityServer4 QuickStart1 我发现 QuickstartIdentityServer 模块具有
using System;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace QuickstartIdentityServer
{
public class Program
{
public static void Main(string[] args)
{
Console.Title = "IdentityServer";
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}
Run Code Online (Sandbox Code Playgroud)
并且API有
using System;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace Api
{
public class Program
{
public static void Main(string[] args)
{
Console.Title = "API";
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用.net核心2.1,并且我正在使用本机IoC容器注册服务并需要一个值来注册另一组服务
var hostBuilder = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services
.AddSingleton<IFirstService, FirstService>()
.AddMyServices(FirstService.MyProperty);
});
Run Code Online (Sandbox Code Playgroud)
我在哪里AddMySerivces使用扩展IServiceCollection来注册其他依赖项
public static IServiceCollection AddMyServices(
this IServiceCollection serviceCollection, string myProperty)
{
// user myProperty here to register other things
}
Run Code Online (Sandbox Code Playgroud)
有什么好办法FirstService.MyProperty让它传入AddMyServices
在我的 ASP.NET Core Web API 中,我有几个控制器在它们的构造函数中接受超过 4-5 个参数,这对我来说不太好。我正在考虑创建一个聚合类,其中包含我经常使用的所有单独对象。我的意思是,例如,而不是这个:
public SomeController : Controller
{
public SomeController(
IService1 service1,
IService2 service2,
Config1 config1,
Config2 config2)
{
}
}
Run Code Online (Sandbox Code Playgroud)
写这样的东西:
// of course registered in DI services.AddSingleton<MyToolkit>()
public class MyToolkit
{
public MyToolkit(
IService1 service1,
IService2 service2,
Config1 config1,
Config2 config2)
{
...
}
public IService1 Service1 { get; }
public IService2 Service2 { get; }
public Config1 Config1 { get; }
public Config2 Config2 { get; }
}
public SomeController : Controller …Run Code Online (Sandbox Code Playgroud) 我有一个控制台 .NET 核心应用程序,它使用该Microsoft.Extensions.DependencyInjection库作为依赖项注入框架。
我想使用这个框架来注入一个“向下”两个级别的依赖项,而不必在中间层多余地提及这个依赖项。我该怎么做呢?
目前,我注入依赖项的唯一方法是将其向下传递,直到需要为止。这是我的独立控制台应用程序,它演示了该要求。它是一个简单的程序,可以根据示例资产和负债金额计算一个人的净资产。(它实际上只是减去两个金额)。
该Program.cs文件包含程序主入口点并注册依赖项。
程序.cs:
public class Program
{
private static IServiceProvider _serviceProvider;
public static void Main(string[] args)
{
RegisterServices();
IServiceScope scope = _serviceProvider.CreateScope();
scope.ServiceProvider.GetRequiredService<ConsoleApplication>().Run();
DisposeServices();
}
private static void RegisterServices()
{
var services = new ServiceCollection();
services.AddSingleton<ICalculator, Calculator>();
services.AddSingleton<ConsoleApplication>();
_serviceProvider = services.BuildServiceProvider(true);
}
private static void DisposeServices()
{
if (_serviceProvider == null)
{
return;
}
if (_serviceProvider is IDisposable)
{
((IDisposable)_serviceProvider).Dispose();
}
}
}
Run Code Online (Sandbox Code Playgroud)
设置依赖项注入后,Program.cs运行该ConsoleApplication.cs Run方法。
ConsoleApplication.cs:
internal class …Run Code Online (Sandbox Code Playgroud) c# design-patterns dependency-injection di-containers .net-core
我在看设计模式,但在Factory和抽象工厂模式之间感到困惑.任何人都可以解释在何时遵循哪种模式的差异.
感谢名单
c# ×11
.net ×4
asp.net-core ×3
.net-core ×2
asp.net-mvc ×2
.net-4.0 ×1
expression ×1
ios ×1
lambda ×1
ninject ×1
xcode ×1
xcode5 ×1