小编Rub*_*ink的帖子

如何使用Ninject处理带静态方法的类?

如何使用Ninject处理带静态方法的类?

也就是说,在C#中,一个接口中不能有静态方法,而Ninject在使用接口的基础上工作?

我的用例是一个类,我希望它有一个静态方法来创建一个未填充的自身实例.

编辑1

只是在TopologyImp类中添加一个示例,在GetRootNodes()方法中,如何创建一些要返回的iNode类?我会用正常的代码练习构建这些或者我会以某种方式使用Ninject吗?但是,如果我使用容器创建那么我没有给IOC这个库知识呢?

public interface ITopology
{
    List<INode> GetRootNodes();
}


public class TopologyImp : ITopology
{
    public List<INode> GetRootNodes()
    {
        List<INode> result = new List<INode>();

        // Need code here to create some instances, but how to without knowledge of the container?
        // e.g. want to create a few INode instances and add them to the list and then return the list 
    }
}

public interface INode
{
    // Parameters
    long Id { get; set; }
    string Name { …
Run Code Online (Sandbox Code Playgroud)

dependency-injection ninject

14
推荐指数
1
解决办法
7830
查看次数

获取ASP.NET MVC中当前操作/控制器的自定义属性列表

查看为ASP.NET MVC2编写的http://lukesampson.com/post/471548689/entering-and-exiting-https-with-asp-net-mvc中的示例代码,我注意到他们可以检查自定义属性是否为通过访问filterContext.ActionDescriptorfilterContext.ActionDescriptor.ControllerDescriptor分别应用于当前操作或控制器:

public class ExitHttpsIfNotRequiredAttribute : FilterAttribute, IAuthorizationFilter {
    public void OnAuthorization(AuthorizationContext filterContext) {
        // snip

        // abort if a [RequireHttps] attribute is applied to controller or action
        if(filterContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(RequireHttpsAttribute), true).Length > 0) return;
        if(filterContext.ActionDescriptor.GetCustomAttributes(typeof(RequireHttpsAttribute), true).Length > 0) return;

        // snip
    }
}
Run Code Online (Sandbox Code Playgroud)

检查自定义属性的操作和控制器的ASP.NET MVC 1方法是什么?在ASP.NET MVC 1中filterContext.ActionDescriptor,我无法分辨.

asp.net-mvc custom-attributes authorize-attribute

14
推荐指数
3
解决办法
2万
查看次数

在使用JSON.NET序列化对象时,如何添加自定义根节点?

我已经为我的一些对象添加了一个自定义属性,如下所示:

[JsonCustomRoot("status")]
public class StatusDTO 
{
    public int StatusId { get; set; }
    public string Name { get; set; }
    public DateTime Created { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

属性非常简单:

public class JsonCustomRoot :Attribute
{
    public string rootName { get; set; }

    public JsonCustomRoot(string rootName)
    {
        this.rootName = rootName;
    }
}
Run Code Online (Sandbox Code Playgroud)

序列化对象实例时JSON.NET的默认输出是:

{"StatusId":70,"Name":"Closed","Created":"2012-12-12T11:50:56.6207193Z"}
Run Code Online (Sandbox Code Playgroud)

现在的问题是:如何使用自定义属性的值向JSON添加根节点,如下所示:

{status:{"StatusId":70,"Name":"Closed","Created":"2012-12-12T11:50:56.6207193Z"}}
Run Code Online (Sandbox Code Playgroud)

我发现有几篇提到IContractResolver接口的文章,但我无法理解如何做到这一点.我的尝试包括这段未完成的代码:

protected override JsonObjectContract CreateObjectContract(Type objectType)
{
    JsonObjectContract contract = base.CreateObjectContract(objectType);

    var info = objectType.GetCustomAttributes()
                   .SingleOrDefault(t => (Type)t.TypeId==typeof(JsonCustomRoot));
    if (info != null) …
Run Code Online (Sandbox Code Playgroud)

c# serialization json custom-attributes json.net

14
推荐指数
3
解决办法
2万
查看次数

Visual Studio 2005 - > 2008/10 Service Installer项目升级问题

我已经升级了[VS2008内置的[.vdproj MSI生成器项目] System.Configuration.Install.Installer,其中a ServiceProcessInstaller和a ServiceInstaller从Visual Studio 2005到2008.安装程序类没有任何自定义的后果(即,没有尝试启动或停止服务或注册儿童)

RemovePreviousVersions设置为true,我正在改变VersionProductCode.这会在安装期间触发错误:

"错误1001:指定的服务已存在"

谷歌搜索产生的东西(但直到现在才开始): - 谷歌"指定的服务已经存在"
我迄今看到的最有用的是http://forums.msdn.microsoft.com/en-US/winformssetup/thread/b2d1bd22-8499-454e-9cec-1e42c03e2557 / 但是这并没有回答这个基本问题: -

鉴于用户可以选择:
a)安装位置相同
或b)安装位置不同
,最小的代码更改是否合理地确保旧服务被卸载并且新服务被安装?或者,对于将v1.0.1升级到具有相同名称的相同服务的v1.0.2的基本方案(即签名),是否需要进行其他代码更改以解决此问题

(如果在新安装程序中有一个重要的卸载步骤,那么强大的命名只会在新的安装程序中发挥作用.)

我在VS 2008中生成了一个新的安装程序,它的表现并不好.

目前,我的解决方法是停止更新VersionProductCode强制用户在被告知已安装版本时手动卸载.

附录感谢divo的探测:虽然最简单的黑客攻击可能是"如果调用安装步骤及其升级,请首先调用卸载步骤",我想要一个正确的正式祝福答案!(例如,在升级过程中重命名服务时,简单的黑客如何应对?)

installer windows-installer windows-services uninstallation visual-studio-2008

13
推荐指数
1
解决办法
9905
查看次数

C#Reflection - 派生类型中的基类静态字段

在C#中,当我反映派生类型时,为什么我看不到基类的静态字段?

我都试过type.GetFields(BindingFlags.Static)type.GetFields().

c# reflection inheritance static field

13
推荐指数
3
解决办法
4242
查看次数

clickonce bootstrapper和msbuild的问题

我有一个在Windows Server 2003上运行的CruiseControl .NET构建服务器,我正在尝试使用msbuild构建和发布我的ClickOnce应用程序.

除非我启用ClickOnce应用程序的引导程序,否则一切正常.发生这种情况时,我在DeploymentGenerateBootstrapper目标中收到以下错误:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (3939,9):

error MSB3147: 

Could not find required file 'setup.bin' in 'E:\Projects\src\TestProject\Engine'.
Run Code Online (Sandbox Code Playgroud)

.NET Framework 3.5 SP1和4以及最新的Windows SDK都安装在服务器上,但C:\ Program Files\Microsoft SDKs\Windows\versionNo \中的引导程序文件夹不存在.我试着从我的工作站机器上复制文件而没有运气.

我不想在服务器上安装Visual Studio,只安装必要的SDK.

我也尝试从我的机​​器上复制bootsrapper文件夹

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper
Run Code Online (Sandbox Code Playgroud)

建立服务器,但没有运气.

有任何想法吗?

msbuild clickonce winapi

13
推荐指数
2
解决办法
8066
查看次数

MS Deploy可以执行包和转换,但不能部署吗?

在.NET 4.0中使用msbuild,我可以使用"Package"目标构建Web项目,并且可以将包放在zip文件中.但是,当我查看那里的web.config时,它没有被转换,它有"$(ReplacableToken_Web_SiteConnection-Web.config Connection String_0)"

我可以运行"TransformWebConfig"目标,它将进行正确的转换,但只是在自己的孤岛中.

我还可以运行"Build"目标并传递"DeployOnBuild = True; DeployTarget = MSDeployPublish"属性,它将在我的服务器上部署包,并完成正确的web.config转换.

但是,如果我想手动将软件包部署到服务器,如何使用"TransformWebConfig"执行"Package",以便zip文件中包含最终的web.config?

msbuild web-config msdeploy

13
推荐指数
2
解决办法
5193
查看次数

如何快速学习Windows开发的Autofac?

我即将开始一个项目,其中使用的IoC是AutoFac - 在一家新公司.我之前没有DI/IoC的经验,想要加快速度,所以我看起来并不太愚蠢.这将是一个WPF应用程序(我再也不是太狡猾了,但那会好的)

我可以用什么好的资源来学习Autofac和IoC?我将在下周一的星期一开始我们的初始阶段:(本周末我已经把所有东西都拿走了!

我应该提一下,虽然IoC的想法很棒,但我不知道当我们在其他领域使用它时,我们如何随身携带"容器".我们是否创建了一个单例(那个接缝来表示不好)或者我们是否创建了一个带有GetService访问器的静态类?

编辑:我正在阅读关于Autofaccodeproject文章,并且想知道IoC正在尝试通过NInject教程解决什么,但没有什么可靠的.

c# wpf dependency-injection ioc-container autofac

13
推荐指数
1
解决办法
1万
查看次数

C#:Func <>而不是方法?

这是一个好奇的问题,你们都知道:

使用Func而不是方法有什么危害/缺点吗?简单的例子:

private static Func<int, int, DBContext, List<T>> Foo =
    (i1, i2, dbc) =>
        (i1 != 0) ? dbc.Bar(i2) : new List<T> { /*some default values ...*/ };
Run Code Online (Sandbox Code Playgroud)

VS

private static List<T> Foo(int i1, int i2, DBContext dbc)
{
    return i1 != 0 ? dbc.Bar(i2) : new List<T> { /*some default values ...*/ };
}
Run Code Online (Sandbox Code Playgroud)

.net c# linq func c#-4.0

13
推荐指数
2
解决办法
8087
查看次数

在应用依赖注入时,Func <in T,out TResult>是否适合用作ctor arg?

例:

public class BusinessTransactionFactory<T>  where T : IBusinessTransaction
{
    readonly Func<Type, IBusinessTransaction> _createTransaction;

    public BusinessTransactionFactory(Func<Type, IBusinessTransaction> createTransaction)
    {
        _createTransaction = createTransaction;
    }

    public T Create()
    {
        return (T)_createTransaction(typeof(T));
    }
}
Run Code Online (Sandbox Code Playgroud)

使用相同的容器设置代码:

public class DependencyRegistration : Registry
{
    public DependencyRegistration()
    {
        Scan(x =>
        {
            x.AssembliesFromApplicationBaseDirectory();
            x.WithDefaultConventions();
            x.AddAllTypesOf(typeof(Repository<>));
            x.ConnectImplementationsToTypesClosing(typeof(IRepository<>));
        });

        Scan(x =>
        {
            x.AssembliesFromApplicationBaseDirectory();
            x.AddAllTypesOf<IBusinessTransaction>();
            For(typeof(BusinessTransactionFactory<>)).Use(typeof(BusinessTransactionFactory<>));
            For<Func<Type, IBusinessTransaction>>().Use(type => (IBusinessTransaction)ObjectFactory.GetInstance(type));
        });


        For<ObjectContext>().Use(() => new ManagementEntities());
    }
}
Run Code Online (Sandbox Code Playgroud)

你怎么看?

c# delegates dependency-injection inversion-of-control func

13
推荐指数
2
解决办法
2357
查看次数